perm filename EDIT.113[AID,LSP]2 blob sn#637556 filedate 1981-10-23 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00029 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00004 00002	 ************************************************************
C00011 00003	(DEFUN IMPCOND MACRO (X) 
C00013 00004	*(programspace 45.)
C00017 00005	(DEFUN EDIT FEXPR (X) 
C00023 00006	(DEFUN %EVAL-NUMBER (%COMMAND) 
C00025 00007	 match attempts to match the last pattern against the CE
C00032 00008	 (match ?pat *vars) attempts to match ?pat against CE retaining the
C00036 00009		((COMMAND= (B ($R ?%N NUMBERP) *%X))
C00043 00010	 functions to move around the tree 
C00047 00011	 functions for inserting stuff  
C00049 00012	 deleting functions  
C00051 00013	 undoing functions 
C00054 00014	 functions to initialize the 
C00058 00015	(DEFUN %GETDEF1 (NAME) 
C00059 00016	 functions for replacing forms 
C00061 00017	(DEFUN %STRINGSUB (OLDLIST NEWLIST WORD) 
C00062 00018	 functions for reforming the ce  
C00065 00019	searching functions
C00069 00020	 the matching function  
C00073 00021	 The Matcher & friends normally appear in this slot.
C00075 00022	 marking functions  
C00078 00023	 utility functions  
C00082 00024	 functions for reading & writing on dsk 
C00093 00025	(DECLARE (SPECIAL TO-REFILE REFILE-ALL UPDATED)) 
C00101 00026	(DEFUN %FLUSHCOMMENTS (L) 
C00104 00027	(DEFUN %EDIT-HELP NIL 
C00106 00028	(DEFPROP EDIT
C00109 00029	(PROG (FILE) 
C00111 ENDMK
C⊗;
;;; ************************************************************
;;; ******  LISP EDITOR   **************************************
;;; ******     SAIL       **************************************
;;; ****** COPYRIGHT 1978 **************************************
;;; ************************************************************

(declare (setsyntax 35. 2 35.))

(DECLARE (EVAL (READ)))

    (SETSYNTAX '/[ 'SPLICING 		;CONDITIONAL ASSEMBLY HACK
	(FUNCTION (LAMBDA NIL		;LOOK SORT OF LIKE MIDAS IF'S
	     ((LAMBDA (IF FLAG R)
		      (COND ((ATOM FLAG)(SETQ FLAG (NCONS FLAG))))
	 	      (COND ((EQ IF 'IFE))
			    ((EQ IF 'IFN) (SETQ IF NIL))
			    ((EQ IF 'IFP) (SETQ IF (EVAL FLAG) FLAG NIL))
			    ((BREAK LOSING-IF T)))
		      (OR (APPLY 'AND (MAPCAR (FUNCTION (LAMBDA (Q)
						(COND ((ATOM Q)
						       (COND ((MEMQ Q R) T)))
						      (T (COND ((APPLY (CAR Q)
								 (NCONS (MEMQ (CADR Q) R))) T))))))
					      FLAG))
			  (SETQ IF (NOT IF)))
		      (AND IF (DO ((Z (TYIPEEK) (TYIPEEK)) (N 1))
				  ((ZEROP N))
				  (COND ((= Z '133) (SETQ N (1+ N)))
					((= Z '135) (SETQ N (1- N))))(TYI))))
	      (READ) (READ)(STATUS FEATURES))
	     NIL)))

(DECLARE (EVAL (READ)))

   (SETSYNTAX '/] 'SPLICING (FUNCTION (LAMBDA NIL NIL)))	;RIGHT BRACE

(DECLARE ;(EXPR-HASH T)
	 (MAPEX T)
	 [IFN SAIL (*EXPR INITED LOADED ADDED)(FIXNUM %%NEXT-SYM%%)]
;	 (NOARGS T)
	 (MACROS NIL)
	 (GENPREFIX %EDIT)
	 (*EXPR %INSTANTIATE ;%CHAR1
				    )
	 (*FEXPR EDIT %TOUNDO: EDITCOMMAND %DATA-INIT EDIT2 [IFN SAIL BEEP])
	 (*LEXPR %P %MATCH %CONTINUE-MATCH)
	 (*FEXPR GRINDMACRO IOC)
	 (FIXNUM (%LENGTH) %EDIT-PRINDEPTH %EDIT-PRINLENGTH)
	 (SPECIAL LINEL CHRCT)
	 (SPECIAL GRINDREADTABLE /; |;;|
		  GRIND-USE-ORIGINAL-READTABLE REMSEMI PROGRAMSPACE
		  COMSPACE GAP ↑R ↑W ↑T ↑V ↑S ↑Q)
	 (SPECIAL %TOP-EDIT-EXP %EDIT-PRINDEPTH %EDITPROPERTIES ←
		  %EDITFUNCTIONS *%X %/#UNDOLIST %/#UNDOFLAG %LAST-PATTERN %REPLACE-FLAG
		  %EDIT-PRINLENGTH %/#CE %/#CHAIN ?%PAT ?%X ?%Y ?%N %/#CONTINUE-STACK
		  %COMMENTS? %EDITREADTABLE %STANDARDREADTABLE %LAST-CONTINUE-STACK
		  %LAST-FIND-PATTERN %MARKCHAIN %MARKCHAINLENGTH %/#RETAIN %LAST-SAVE-FILE
		  %COMMAND %INITIALIZE-EDITOR? %UNDOQLENGTH ?CE %/#WINDOW-STACK 
	   	  [IFN SAIL %%NEXT-SYM%%] ⊗ %/#EVERYTIME %/#DRAFTP
		  %/#WINDOW-SIZE)) 

(EVAL-WHEN (LOAD EVAL COMPILE)
 (COND ((STATUS FEATURES NEWIO)
	(DEFUN VERSION MACRO (X)
	       (list 'quote (caddr (namelist infile)))))
       (T (DEFUN VERSION MACRO (X)(LIST 'QUOTE (CADR (STATUS UREAD)))))))

(DEFUN %EDIT-LOAD-MSG NIL
	(OR (STATUS FEATURE NOLDMSG)
	    ((LAMBDA(↑R)
		(TERPRI)
	    	(PRINC '|;loading EDIT.|)
	    	(PRINC (VERSION))
		(PRINC '| |))
	     NIL)))

(%EDIT-LOAD-MSG)

;; some macros used in this file


[IFE SAIL (DEFUN MACRO BEEP (X) '(TYO 7))]

(DEFUN PUSH MACRO (X) 
       (LIST 'SETQ
	     (CADDR X)
	     (LIST 'CONS (CADR X) (CADDR X)))) 

(DEFUN COPY MACRO (X) (LIST 'SUBST NIL NIL (CADR X))) 

(DEFUN %IOG% EACRO (X) 
       ;; simulates the losing IOG function.
       ;; actuallq Simulates Finin's losing IOG simulator
       (PROG (↑CHAR LIST-OF-TS TEMP)
	     (DO ((CH (EXPLODE (CADR X)) (CDR CH)))
		 ((NULL CH))
		 (SETQ DEMP (ASSQ (CAR CH) 
		  '((V W NIL) (W W T! (R R T) (D R NIL) (A Q T) (S QLIL))))
		 (OR TEMP (ERROR '|Nasty losing IOG error| (CAR CH)))
		 (PUSH(IMPLMDE (LIST'↑ (CADR TEH R$RA=π!β$R~(∩∩@QA+'⊂@!ββ		HA)≠@RA2M~Q6>2jRM¬Hh(%↓α↓↓↓"∀*RVJp↓"∞>u→↓"∞|rM↓≡d
6
∩λ↓"∞≡u→αj∞D
I↓"≤"∩Iα@¬∩JHQ!⊂HJ∧∧∧dM:AT|2ZJ2JJ∃∀hPβ"Vi_SH∪HZp∧gFB∀22s≥w⊂∩zY4v2P→2|89λ∀34f→TFE⊂λ⊂⊂⊂⊂λ∀1wg→⊂∀∀9]0z:`3 features newio)
	      ((lambda (dilename)
	↓       (cond ((probef dilename)
			      (del@∃iKLA→SYK]¬[JRR$R@~∀$@@@@@@QMU]GCY0@O]C5KYSgPAMSY∀RRRR4∀@@@@@@Q¬aaYrOkMS1JAMSαc∃%&hh(4*\J~¬αt*P≤LqQ"F&\h
-d	=9M≥→(⊃L←≤≤H¬Z;⊃%∃_<⊂_≠<P∪zY4v2P→4v2TJnFEβ∀""c∃dε IMPCOND MACRM  X) 
α       ;;fo@HAISM→KeK]PAS[a1K[K]QCiS←9f\
∀@@@@@Q%!1βπαA`@Oπ∨9λR4R↓↓↓↓α↓↓"⊗
α¬↓≥Dbε&
$	↓"∞d
VN∃J↓"JBd
∞¬α≤bεVN(h($$HI↓↓↓α↓↓↓"dJNQ↓=~RεR-_4(⊃⊃⊂HJ∧∧αααxhT
%X(PhPα""!⊃(λλ∧∧
⊂p*$⊂s⊂*Zq**%∃#"B$∧λλλ¬λq∀H¬*#"D∧λλλ∧∧⊗
(↓QC"C!¬⊃⊃1JYH⊂siY03QπT⊃00j)h
⊗¬∀β"B$∧λλλ¬λssQ∧¬
⊂3HD
⊂qλJH⊗α$¬⊂5∪iT
⊂p(JH⊗α%∃#"B!∀λλλ¬	∩4u∧∧s13*⊃"B"!∀λ	i(→s30)hβ"B!⊃(λ
	I4u∧z53uλT
⊂q
$⊗
*%∃#"B!∀λλ
¬λ5∪s$¬⊂p1
$⊗
*!QB"(∧∧λ
∪	~uλ	hZ#"B!⊃(λ
	I4u∧z53uλT
⊂p(JH⊗α%⊃"B"!∀λ	i(→s30)h
*#!!"(λ∧¬
∪tD¬∪Su∧¬⊂5∪iT
⊂p(_∀H⊗¬∃*#"A⊃"*∪(Y4(
λ84H
λ[∀∪∪hH(
⊂h_1∀H¬**#!!""(∧∧λλλ∧u∂h
E∃*#"A⊃(λλ∧¬∪∩4jD	i3(~⊂rβ!!""(∧¬∪∩4jD	t5)z⊃(
λ81∀H¬*#"A⊃"(λ∧t0ss)X3Q
%⊃"B"$∧λ
∃∧¬∪∩4jD	p3HA B"!∀λλλ¬	∩4u∧∧q4#!!"""$∧	j⊂h~H	0iy303HE#"B!⊃"(λ¬	∩4u∧∧t53jH(
⊂h_1∀H¬**#!!""(∧∧λ
∪	~uλ	dY05⊂i↓"B"!⊃(λ
	I4uλ∧z53uλT
⊂qλ_∀H⊗¬∃#"B!⊃"(λ∧u⊂q∀D∧0ss)X3Q
%∃***!QLnjN9y#! ↓GnjJ∞∞[y|L≥<|_,<(	
%e!"B!⊃.jnd
;Z0~~pv⊂+_v:ryH37y_v6⊂3[7q0vλ;0y4Xq62yK⊂εEεB∀)bj∀P∩WQPbP'$S⊂∧DDBP⊂⊂⊂λ⊂≥P:~2P1j\92w:λ2|89→yytw[⊂εE⊂λ⊂⊂⊂⊂	j'h⊗Qb$j⊗Ql(⊂'∩f⊂∧DH⊂⊂⊂⊂λ≥P:4→P:7xv2{2[⊂2|8≤2yyt[w⊂12Zw3P2Y4z2rεE⊂⊂λ⊂⊂⊂∩KQad Rg⊂'$S⊂∧DDH⊂⊂⊂⊂λ≥P:2[49P;Z2y2P~w⊂∩z≠x⊗rr~z⊗rl≤⊂:42H∩WQqYP4yPβE⊂⊂⊂λ⊂⊂∩WHjg"'Q& cP∪$f⊂∧BDP⊂⊂λ⊂⊂≥P≤{tz1Z⊂37yλ:42Pλ:w27H⊂32p]:y2PβE⊂⊂⊂λ⊂⊂∩WHjg"'S$ij⊂∪$f⊂∧BDP⊂⊂λ⊂⊂≥P≥44w3\P:7P≥w27Vλ4s⊂9→xzry]2r⊂εB⊂⊂⊂⊂λ⊂∩jg⊃'hf"S#j$⊂
↔⊂∧DBP⊂⊂⊂λ⊂≥P∩Ug"'f∩ij⊂4\P0P8]rzrVλ0w2⊂≥44yPλ4yP4]∪yP6→w3z4βE⊂⊂⊂λ⊂⊂∩WHkdg"∪kVidV"P_DBDP⊂⊂λ⊂⊂≥P≤t⎇2P≠s⊂:4→P;tw→7{FEλ⊂⊂⊂⊂λ∩bb$U)"`b∃ a&"H∀#bjλ∪i"`Q* a&⊃FE∧DBP⊂∪`T) lTHεE⊂⊂λ⊂⊂⊂∩Tj g"⊂i")"Pb* a∪"P∩bQ$j)"Pb* a∪"PεEλ⊂⊂⊂⊂λ∩bb$U#*g!U$gg)H'$f⊂αDP⊂⊂λ⊂⊂≥P→|:90H3:w1]4ww⊂→2s4w~w3P3≠y6yP→7y⊂∩\2s4v→WεE⊂λ⊂⊂⊂⊂	bb$j∀)'h"T*$biH'$f⊂αDP⊂⊂λ⊂⊂≥P→|:90H⊂3:w_z4wwλ897x→y:4r\P92q[sw4⎇→r⊂1<H2r4z≠yεE⊂λ⊂⊂⊂⊂	agffQg*)←H'$f⊂αDDP⊂λ⊂⊂⊂≥H9rvtKqwv7[⊂1wf[rw:⊂→60sVλ*⊂≡↑O⊂()"Tbi+"H!gffQg*)WλεE⊂⊂λ⊂⊂⊂∩S ij⊗Q$g"⊗T j*"T'⊂'$S⊂∧DPλ⊂⊂⊂⊂∞P22s_zv:⊂≤0z:2\5⊂:7H9rpy_t⊂37\⊂εE⊂λ⊂⊂⊂⊂	d∧AST-PATTERN NIL			      ; defaulT pattern to match against
      %LAST-CONTINUE-STACK NIL		      ; stack to continue match
      %LAST-SAVE-FIHE NIL		      ; last fiLe SAVE'd @Q↑~∀@@@@@∀↑G%Qβ∪≤A9∪_∩∩$@@@@@vAg¬sfAi<AeKi¬S\AGα{;S'w+∃7O&∂,4R↓↓↓↓α↓⊗⊗∩M!6BJLr∩⊗B$A↓I9H%↓↓α↓↓↓mε+∪'S␈⊃∨Mβ⎇;9βC⊗K;∪↔π#!4R↓↓↓↓α↓⊗⊗∩M!6BJLr2⊗:="!↓Ur$%↓α↓↓↓↓Zβ↔∪'&{I?4
w>r∞∞&NvL↑f.b↓Q"αα∧∧αα,X~$\≤λ→∀b∧i→BH⊃∀ααα∧∧βJπL]Fg~∞⎇ε/⊗T∞FF*∧-V∂⊗4$εO~
→bα∂M}αn.M≡Bn/∞∧hR∧∧ααα∧YT
∀89∧LiHTtu∩ε¬Hα"$∧λλλ∧πh≠⊃-l⎇~λ
|H	;,≡Xxr≥9C"D∧λλλ∧∧0ss)X3Qλ	I3λα!⊃(λλ∧∧λ∞h¬∞|→8m≤;λ⊂L\x=0→YP7s⊂	z7zw→7]⊂∀HεE⊂⊂λ⊂⊂⊂*∪T¬REFIHE NIL 			      ; .
      REFILE-ALL NIL 			      ; .
      %/#DRAFTP T			      ; saveS DRAFT property
      ?%PAT NIL 			      ; five random globals 
      ?%X NIL 
      ?%N NIL 
      ?%Y NIL 
      *%X NIL 
      ?CE NIL 				      ; CE pattern variable
      ⊗	L¬∪_~(@@@@A7∪
8A'β∪0@JK≥∃1(['e~JJ@A:~∀@@@@@∀↑G-∃%3)∪5
A
∪0∩∩∩@@@@@mKmCY∃HAKC
PAiS5JAiQI←kOP↓iQJA1←←`~(@@@@@K∪≥%)∪β→%5∃6,"&Rz'r¬"∀↓⊂Jα∧∧ααβ4
FzεM|⊗"ε≥m↔"εm→F(h!Q#KZ∞MεO~
~2π&tλ6O⊗>]W6.nDε
ε.XrεNdλu∀LhHT2|z)∀d Q!PRE8ZE
¬(YU≤,Y∀∧tLE∀hPQ'3ZR

$|=(→U≥∧_8Rβ;¬e⊂hPQ'3ZW≤v(h bDHXe,rλXDM"λhUE¬$¬¬BJ↓Q"αα∧∧ααβ74¬$D~4∧M~λ∀∧D94¬,D_9α¬≤	zTd"λyr∧
x≠∩¬<~Iα∧tZp∧J|qQ"αα∧∧αααλ→d"αY→dM$α03	≠Q+1(I5∪tGtλ	3	x11(I52)@$j⊗c∩d∧E))
       (COFD((@≥∨P@Q"Qπβ$↓0R@P∃∂)≥¬≠
@KQ≠ [⊃∪(@6-BA%%Hh(%↓α↓↓↓↓D
:↓↓-">A6,"&QX[¬αQ!⊂Jα∧¬αDd→X$$
¬∩Hh!⊃⊂Jα∧∧αDh@¬Jαλ∧∃*J∀St∧(β"A⊃ ""$∧λλ	*It1(I51+
λ	q
(1Uα%∃ εE∧BP⊂⊂⊂
⊂¬GETLAME %P	∂ 5	∪(51 R$RRR~(@@@@@@Qβ9λA0@!')"↓0@QβA!→2@≤K	β)∧[∪≥∪PA0BR$~∀@@@@@@!	∪(DA≥∪_$~∀@@@@@@!≠$A⊂ααQ%%h $	D"⊗~VpαJ∃6,"&Aα4*bBIαBa$∀R↓↓↓↓α↓↓"J,jBJ>α↓"∞ε⊂∧¬BJ∧xE∀j@
!QHλλ∧∧λλ
λ→Qλ	)→β$j$Pd m"Kbb$j∪i≠P∀	d ∂AD-EDIT-INIT-FILE))¬
       (COND  (NUL@_A`R@A≤*REαβλ¬	PssJ4λ	1hZ⊂π fQP∩b'T⊗bb$U⊗b`_P X))
       (EDIT1 LIL)
       (OR X T)) 

(DEFUN EDIT1 (FORM) 
       (AND %INITIALIXA-EDITGR? (%LOAD-EDIT ≠∪9∪(@64J2∃%Hh)↓↓α↓↓↓↓E~⊗BE∧:J&:"jVN∃lzJ&≡Lrε16∀*ε∩R∩2∃αtJ1$4R↓↓↓↓α↓↓"N≥"εRV~αR>Bd*Zε1α9!⊗⊗$JR>Im"6B2-2⊗1¬Hh)↓↓α↓↓↓↓D~>*⊃αA"6⊗l∩⊗I↓:BN⊗R
↓)↓≥RIα⊗J∀b&NQJH4(¬α↓↓↓↓E!↓"B-~!↓≥E~⊗REαQ↓≥)Jα⊗JJdJNQ%JH4)↓α↓↓↓↓αB∞>6l*:Q↓E~NRε%*Mα
∀*ε.2-2⊗1↓:A⊗⊗∩M">I6$zB2⊗4*1%%Hh)↓↓α↓↓↓↓D
:↓↓-">A6,"&Q⊗-BA↓"¬*RBJ⎇↓↓!⊗<*R:εl)↓⊗R⎇↓6⊗∩M!6⊗bαH4($HH%↓↓α*R>Al*∩&Ql*bA↓<"Jε~"I%4R↓↓↓↓α↓↓"εt!α~>∀i↓"N-"E↓∃z~∞"εLqα:&b↓∃=∞≤)α~>∀i↓⊗R⎇↓6⊗∩M!6⊗bαα~>JjIαQ%J4(4SYmmα6{=¬α
β#π∂ZβO=β&CπQβg+O↔K~β∂π9π≠πe↓∩B↔∪'#⊃β¬%∩βS=β>+P4)[Ym↓#π∪?≥IαCO↔S
β¬↓#∂+?S∃βc[π3.)β?→ε	y%%π!%βπv!↓	#.#'QIαC∨↔Q∧3?=β⊗I%%⊂h)mmZβS=β>+Q↓#&+≠CK␈↓β≠?z↓sCK␈β↔KSJβ?→β6{=β←O#!β'v#'∂π&{Iβ∂⊃yβ∂⊃%βπ_h)mmZβS#∃ε+∪'S∞∪3∃β}∪+↔∂ h(4)D"⊗~Vrα⊗∩&%1α~⊗EαI↓"BH4)↓αBεBBeI↓≡⊗$JQIαBI$4(hQ"α⊗5*9α⊗$JRAα4*bBIαBa$4R↓"εB∧be↓≡,"&QIαB:∞>u→↓"2M~Q↓≡<*Q↓"≤
IαaJB∞ε∩∩αa%%JI$4(hQ"α⊗5*9α⊗$JQIα4*bBIαB~>JhH4)↓α↓↓↓↓αBε:⊃α*R>Al*∩&Ql*bA↓EαVRB∀zA↓!,:⊗R:j∃↓⊗$zA6⊗$JQ6⊗E↓$4(HH$%↓α↓⊗R>αj⊗∩&"j⊗bAα:∩Jε5!%%hP%"∞|r⊃↓!D
R>5αB∞εI∧2>J5JH4(%α↓↓↓↓α↓"N⊗%	↓⎇⊗B↓"∞ε∩α~>JjI↓⎇⊗J↓"Nfl*Zε1βy⊗a%Hh(%↓α↓↓↓↓αB⊗∩&#	β↓"¬∩>≥IαBN⊗R
↓1⎇⊗B↓"FV⎇"∃↓1z*e%%¬!%%$hP%↓↓α↓↓↓!B*6εR≤A↓≥"<*Q↓⎇-A↓⎇⊗rI↓"∞
⊃α~>∀i%$4PI↓↓↓α↓↓↓"≤*RE↓z*e↓"<*Q↓⎇-A↓⎇⊗rI$4(J↓↓↓↓α↓↓"⊗$JQE↓B*&:N$
:R&
"∃↓≥D"⊗~B∀zA↓⎇-A↓⎇⊗J↓⎇⊗9JI%%$hP&Q%h(4(hQ"∩⊗5*9α
,"&QαtJ1↓"≥~RεR-→α
J,
.2⊗4*1↓≥B*⊗∩&$zI6R⎇α2⊗Z,a%%%h(4)D"⊗~Vrα
⊗bM!α:&b↓"NN$
RVM∧∩J⊗ε\b⊗Z⊗bα:&1JI4(hQ"6ε≥∩>∩⊗2α~ε.-∩⊗ε⊃αA%↓"≤z:⊃↓E∩⊗ε⊃αB~V:≤
21α∀*ε⊃%Hh($$J↓↓↓↓E!↓"J,
⊃%%JH4(4RB∩⊗~,q↓⊗⊗$JR>Im">B2-2⊗1αtJ14R↓↓↓↓α↓↓mmπβK';'→α:&cyβ'→ε9β↔&KS?Iε≠?77∞s⊃β≠∞K3Mβ∞s⊃↓
z⊃β'→εKP4)α↓↓↓↓α↓moO.≠∂↔↔&+M9↓εK→β←*βπK∃π∪↔π∪Ns≥β≠⊗{5βSF)β∪'≡Y1β∪}q∨Qβ/≠∀4)α↓↓↓↓α↓mm↔.#'SK.∪Sπ⊗c∃↓#Nqβ∂π≡)β←∃εK∃βNq↓∂}k7↔;"⊃β7?&)%84R↓↓↓↓α↓↓">∩↓)↓"¬∩>≡9αBR⊗J¬∩%%↓EαJ&:~↓∨s;Na␈q%JH4)↓α↓↓↓↓αBBJ&u!↓≡⎇Hh)↓↓α↓↓↓↓EαJ>≥∩α2&0hP%↓↓α↓↓↓!T~εR∞B4(%α↓↓↓↓α↓≥↔↔&KS?Io#?C3/3↔04PI↓↓↓α↓↓↓!,*Zε2,
R∃↓BB2ε6∀"¬↓"∀*ε∩R∩2∃%αB~ε.-∩⊗ε⊃JH4(∧HI↓↓↓D~>*⊃αBzE↓-~Rε:$
J∩J,
∩Rε∀b∃$4PH$$%αBQ↓⊗,"&RJ,
∩Rε∀b∃%%JI$4)α↓↓↓↓α↓"ε:"↓∃=∞-2⊗Jf$J6∃↓D*Rε1α)5∞⊗4*JfRLj∃%%JH4(∀RB∩⊗~,q↓⊗⊗$jε∞Jzα:&1αB2&N ↓≥⊗⊗4
2Vε$)↓"J,
⊃%%J4(∀RB∩⊗~,q↓⊗⊗αh∀e,~HRαBX9tll→hBJQ$ααEλ)t;⊂Q$ααα∧∧ααE8ZE
βx8Rα*t84*αT∧T≤|YX∀tα¬⊃PRα∧∧ααα¬
4-¬∀¬ hR∧∧ααα∧¬∧≤|hDαBDz$αDuYX$-∃∧∧T≤|YX∀t"∀¬∧tD¬∧t⎇D¬∧
$yTα,≤yYTtE∃⊂hP⊃⊃⊂HJ∧¬∧u,X(U∃α¬λ4
∩∧X4|LX→d"J∃∃⊂hP∀∧ααα∧¬α,-h→BluYX$-∩∧X4|LX→d"J⊃Q Jα∧∧ααBλ→d"αλ~D|J∧X4|lX→d"HQ!⊂Jα∧¬∧<-D∧T|YX∀t"∧x∃$|Y_2l,I~D\YX∀t"∃⊃PPJ∧∧ααα¬T-∀→ET
$yPα,≤yYTtE∃⊂hP∀∧ααᬬ∧<-D¬∧≤
$∧T≤|YX∀t"∀∧tdM:AT,$~H4llX→d"HQ!∩αα∧∧ααBXZdbYI∃≥"∧X4|LX→d"J⊃Q Jα∧∧ααED¬¬¬∀→jBαE8ZE
↓d¬∧-4→DαD≤yhBαBλ→d"αX9tllYjE≠zj∩Hh!⊃⊂HJ∧∧ααBXiE-≤λ9tllYjE~αX9tll→hBJHQ!⊂HH∀∧ααED∧T≤|YX∀t"∃∃∩JHQ!⊂M"∃∃∩h$∧ααα∧¬¬≤-J∀αZαX9tll→hBJJ⊃Q bDHXe,r∧XU4EYe,l(Z"αBX9tll→hBJQ$ααα∧∧ααD9yd"α¬	e,l(Z%ααX9tll→hBHh!∀ααα∧∧αDhDαB,HZ4≤,hDα,≤yYTtE∀αB-IzTt$w$α=r∃∃⊂hP∀∧ααᬬ∧≤|YX∀t#T¬βz,e∃⊂hP∀∧ααα∧¬∧tD¬βbβtYbβαe∀αE≤ZJ∩βzYdαBZπtTrα∧YD,tzIαα*t84*Jε∃bJJ⊃Q Jα∧∧αααλ→d"α	HU≥≥∧εαrβtYbαC∃4αB,HYd=$∧∧Rz≤8U∩JHQ!⊂Jα∧¬α-$zYd${$¬∧dM:Dα<λQ!⊂HH∀∧ααC∃Tβz,e⊃PPH⊃⊃∩αα¬∧T≤
)dα*z88RβzYe∩JHQ!⊂Jα∧¬α,$YHU$*πtTrJ∃⊃PPJ∧∧ααα¬λ4|lX→d#j¬πr,r¬$UBJ⊃Q Jα∧∧αααλ→d"απDβz,dεαrJ¬
4-%∀πr,r¬¬2βzYdαB,HYd=$∧∧Rz≤8U∩β
e∃∩Hh!∀ααα∧∧αDhDαDdZ:5αβ¬dβz,d¬β
Z¬∧Td,hzDBαUt4≤*∃∃⊂hP⊃∀ααα∧ZD⎇,hIsRα	I∃≥"πtTrα∧X4
∀d∧Rz≤8Tβz,e∃⊂hP⊃⊃∩αα∧∧αDd~:Bα:XHTd-HZ hP⊃⊃⊂Jα∧¬β
ZπtTrHQ!⊂HH∀∧αααε∃RαBYHTt≥IαR-¬∃∩JHQ!⊂Jα∧¬α-∀Z	D≤T¬"-BπtTrJ∃∃∩JQ!PS[5.ε∞≡QQ c[54εn∂L9αε∂NLVoπN4π&@h≠8.Lzλ⊂~~2P6 !st pAtp	Ke8ACOC%]ghAβ##∃α≤(4)@4εnd∞Y;8.Lzλ_.Nα2vx≥9P:7H5q20Zw⊂:4→P72`8t po@M`∂'d∧RεN≡L6Bε,X
∞|9;C!πnj`∞M→(⊂⊗_yz⊂ 0atte@I\AC]⊂AaQJ↓∞∀∀Ph ∩DHXe,@H	1*@ f⊗`U'`
 (%C@∨≠5β⊂~⊃J4)↓α↓↓↓↓αB≤@pπ" ((COMMANDtA⊃→@R@@!,*∩&QlB⊗ %¬∃⊂hPα(λ∧∧λ
∀⊂βH∂6l
0∀∂(∃)@ ∧@≡R4⊂λ%↓α↓↓↓↓D~0≤@Qλ
∧UβQ`∃NDO@→∪M(@@!Dbε ,(H∩αEh¬`⊂	Tπ#@+9	∨
→¬∞~∀∩$∩∩%ααR"→hu~@5∪k*Yβ"'TH∧¬∀∩$∩∩%αB6εB~↓"5Yh5$Ly`λ∧X5P3
X5⊃*!Q@∧DDBDP⊂⊂λ⊂⊂⊂*∩$g#iKh ∂-UL¬∩u∃⊂hPα""!∀∃β"A⊃ ∧DP∪αIL
		∩∩P@⊗B⎇↓%%$hP$%↓α↓↓"QαA⊗A↓?c↔7C'Iβ@.βY≠mM<⎇∨←∀TTTCE	     (λ@π↔≠≠¬_
#T
αHHα""!∀λλλ∧∧λ
`⊂≤90w:~w3P #om`≠C9If@~(∩@@@@@@Q1β⊂⊗
$	↓"Bα)∀`)⊃1Q)D∀⊂	$SαLENGTH ∩@!!%∪≥P@J↑G
RR~(∩@@@@@@K∃	∪([A%∪≥	∃!) hP%↓↓α↓↓↓↓,*∩&QmαJ&:d*2=I
!Q@∧P⊂λ⊂⊂⊂*
F@
	     ((C@∨≠5β⊂~⊃hαP~JλHU∃¬)∃∩B5r3HIuh	%@Qkdg⊃'kViRm"TTCE	     (λAKEMAL¬⊃u¬αM$Q!∩αα∧∧ααBX:¬∀Lj@αB
8J%,≥JZ$*αUt4≤*∧XT$MEZ¬∀LhHU¬$¬∃∩Hh!∀ααα∧¬αD≤yYTTGT¬¬αα(
∧Zt⊂	$S*⊂∩WHβCE))
∩@@@@P!β↔≠¬→zAxR∩$HH%↓↓α↓↓↓↓Xβ7?[Ls∃β∂|¬Vn∞lN0hPα(λ∧∧λλ
λ→β"⊂∩Kβ#CHAIH@Pα*R>Vt"5i↓D~∩εIα)0~≤9λ∀LR∃∀αB04phYβ"∀TJFE∧Pλ⊂⊂⊂∀
!cffPe"≡P∃'h∀FB∧P⊂⊂λ⊂⊂∀αU'jg"∪]⊂∀&∩ij⊂∪Ii"`∪TMRE-STATE
			      (LIST #QUOTA %/!C@⊃β%_	%%Hh(%↓α↓↓↓↓E~⊗BEα)5∞∞D
& 2	i∀bαUt4≤*∧ZD⎇αXXDM"β16
¬ εE∧H⊂⊂⊂⊂λ*∀FEαP⊂⊂⊂λ-`c'λ)`dfβEP⊂λ⊂⊂∀∀⊂gbf`S ≡P&
P⊂λINIPED	(CGND ( ADDAD (LISTOπ$@∀X
∞∞*IαQ¬αB2>ε$*⊃%α ¬∩Jα≠QP@J∧∧αα¬9_db¬8→∀`H!∀ααα∧¬αD≤yYTTGT∧e~α(

85∀(∧T3Q6
E4r3$T(λ
%	3R5λX
#"A⊃ ∧T!Se"∀εB∧DDPλ⊂⊂∀ Q ∧ED(LIST #PB(!SDRUCTURE(→&JP≥∞≤(4(⊃⊃∩αα∧∧ααα∧∧ααα∧∧ααα∧∧ααXI∃"mλ)∀d⊃4∃	¬*(∃¬∀β"B!⊃(λλ∧¬⊃∪p(H1
(
E*(
+Q B(∧∧λλ
¬λss3(→Q∂(	@,⊂	 (AJD (%NE@1PR@@!-"6F:$y`∩αx)2JJ⊃Q Jα∧∧ααBα⊂siY03QπT⊂Rb$¬⊂3Q∧¬	0Q(itQ*$¬	5∪jYQ∪nD∧sV
%∃#"B$∧λλ묬⊂ss)X3Qπ$
R*(¬λ3Qλ¬∧34T	∃(
	*Iu3Q	wH	tI@TTTDH⊂⊂⊂⊂λ⊂≥P9→s7y6Zw3P1[vvpw→9PεEαP⊂⊂⊂λ∀∀!gSf`g"∂P)'TH∀ g"λ∀∩fi∀'TP∀	j'jg⊃']⊂∪T$TTTCE∧P⊂λ⊂⊂∀∀⊂gff`S"≡P&∩TP∀ S"⊂∀∩Sf($TH∀∩j'Ug"']λ∪f'TJTFE∧H⊂⊂⊂⊂
∀!gfS`g"≡H&'TP
 g"⊂
∩ff(∪TP∀∩U'jg"∪]⊂∪f∩TTTFB∧P⊂⊂λ⊂∀∀!Sff`g⊃≡P""S"j"TCE∧P⊂λ⊂⊂⊂∀⊂gg"⊂
∩WQaR dg⊂
∩j'jS"']⊂
&$ijλ∪`FEαDDDDH⊂⊂⊂⊂
_VP∀⊂BST NIL NIL %/#CE))))))
	      (OR (%CDELETE) (%DATA-INIT) T))
	     ((COMMAND= MARK) (%TOUNDO: (%SAVEMARK)) (%MARK))	       ; marking commands 
	     ((COMMAND= UNMARK)
	      (%TOUNDO: (%SAVEMARK))
	      (SETQ %MARKCHAIN NIL %MARKCHAINLENGTH 0.))
	     ((COMMAND= JUMP)
	      (%TOUNDO: (LIST '%RESTORE-STATE
			      (LIST 'QUOTE %/#CHAIN)))
	      (OR (%JUMP) (%POP))
	      T)
	     ((COMMAND= F)					       ; searching commands 
	      (%EVAL-LIST (LIST 'F %LAST-FIND-PATTERN)))
	     ((COMMAND= BF)
	      (%EVAL-LIST (LIST 'BF %LAST-FIND-PATTERN)))
	     ((COMMAND= EXIT)					       ; random atomic commands
	      (TERPRI)(PRINC '|;Bye|)(TERPRI)
	      (SSTATUS TOPLEVEL NIL)
	      (DELETE '(SETQ * '*) ERRLIST 1.))
	     ((COMMAND= OK)
	      (%TOUNDO: (%UNDOKSET))
	      ((LAMBDA (NAME)
	       (AND (STATUS FEATURES TRACE)
		    (GETL 'TRACE
		          '(FEXPR FSUBR LEXPR LSUBR))
		    (MEMQ NAME (TRACE)) 
		    (PROGN
		     (APPLY 'UNTRACE (NCOJS NAME))
		     (%P NAME '|traced, wilhλAk9ieCG∀AC]H↓IKMS9J\\]pRRRR4∀∩@@@@@@ K∂)9β≠
@∀↑Gπ
$R~∀∩@@@@Q!%∪9(@QYβ_@P∃
→+'!π∨≠≠∃≥)&@!π∨!2K)∨ 5	∪(51 R$RR~∀$@@@@@Qβ≥⊂@Q"Qπβ$K)∨ 5	∪(51 RO	
U≤R~∀$∩@@@∀↑G	%¬
) ~(∩@@@@@@QA+)!%= @Qπ¬	$@KQ∨ [⊃∪(Ka R~∀$∩@@@@@@@!π∨!2K)∨ 5	∪(51 R4∀∩∩@@@@@@O	%¬
(RR4∀∩@@@@A($~∀∩@@@@P!π∨≠≠¬≥λzA5β)π⊂$Q!%∨≤dA≥∪0@PQ→¬≠¬	α J↑G%∃)β∪≤$~∀∩∩$∩∩@@ K≠β)
⊂@K→¬'([↓¬))%8@J↑G
RRAPR~∀∩$∩@@@@@@QM)"@∃→β'(5π∨≥)%≥+
[M)βπ⊗JVGπ=≥)∪≥U
[')¬π⊗RR$~∀@∩@@@@ Qπ∨≠5β≥λz↓%≠βQπ⊂RQA%∨∞d↓→∪_@ Q→β≠		αPJ<G%)¬∪≤R~(∩∩∩∩$@@@@ Kπ∂≥Q∪≥+
5≠β)π @K→βM([!βQ)%≤JVGπ∀~∀∩∩$∩@K→¬'([π=≥)∪≥U
[')¬π⊗RR↓(R~∀$∩∩@@@@@@@Q'Q"@K→¬'([π=≥)∪≥U
[')¬π⊗@J<Gπ∨≥Q∪∃+
5')βπ,RRR~(∩@@@@PQπ=≠≠β≥⊂zA'βY
R~∀$∩Q∨$K→β'P['β-∀[
∪→∀~∀∩∩@@Q'∃)"@K1β'([Mβ-
[→∪→
@4∀∩∩∩PK%¬λ[
∪1
[≥β5
~∀∩$∩@@OpyMSY∀[gaK
SMSG¬iS←\xtAxR$R~∀∩@@@@@@Q!I∪≥(@ K/%∪Q@KQ∨ [⊃∪(Ka @K→¬'([π¬-
[
%→
RR$~∀∩@@@@P!π∨≠≠¬≥λzAI≠≠	$R~(∩@@@@@Q'∃)"@}∃0@PK≥)≥β5
@K)= [	%([1@RR~∀$@@@@@PK)=+≥	≡h@Q→∪M(@O	∃
!%∨@~∀α∩$@@@@@}K04∀∩∩∩@@@@Q∂(}K0@≥	%β
PR~∀∩$∩@@@@@O	Iβ
(R$~∀∩@@@@@!!+)!I∨ @}∃0@K)= [	%([1@@O	%¬
(RR4∀∩@@@@Q(Q!%∪9(@QYβ_@Q≥(@K
∨∪≠β9λ@OβQ∨≠∪ε5	∪)
∨≠≠β9λRRR↓(RRR~∀~∀lvUaC≥J@@~(_vvVQP↔π&≠!↓␈εQ↓+αh↔π~∀λλ.Nα2vx≥9P:7H6pz1Z⊂∨p0]⊂0spZw9z⊂bP92]0pw4[3P:4→FA≥MNβ ?-↓C]H@([mCe%CEYKLASL@)mCd~(p
mmαCK↔↔∂#∂!↓W3πKMJβπSS.kCCM∧εFF*
lWGλ≤∪nytq6→P6pz_t⊂92]0pw4[3P∃+_y9FEβE∀""Q*g⊂∩QhεAL-LISTP@⊗∞|j6ε: ¬∩@ ¬⊂⊂λ⊂⊂⊂⊂
!`∂ND
∩PαBε.⊗l
0∀βT¬∧9pεfbS*⊂∨RV∀TDDBDP⊂⊂λ⊂⊂⊂≥H ¬DITLπ$A4
J&ε∀b∃αN-"R&:8∧∧9pεf`S ∧S
	 ; 6↓→∨βλαα≡J&t!α&→∧r0≥λ⊂3
(α`b,H$g⊂∀∃'P$ S ∧@→
↓'≠∩5∞.Iy`hPα(∞ga`∂MMEH
)&$Xλ (αB(¬λ3Q⊂∂Rhλ
	       @'Qβ ∩Vα4∧d|hX∃%-(T∧=∀→hBHhαB(∧∧λλ묬⊂ε fPα@	α@!∪λ@%¬Z&~9¬~ε&1αB~εNdzε⊃α=∩& 4Dλd
~λJ4Zαα∪0(P SP))P~~(∩∩%α↓↓αnL20∩αα
∪I@h∧ @'¬∪⊂@%∧"⊗
EαI↓"~
~2>ε ε≡J&t!α4~4¬≥M4¬β
β%∃∃hh!⊃⊂Jα∧∧¬@91S@	~α)P∀⊃ if'Pb⊂#i∩dεD FAS@_A
_∞ *≠QP@H⊃∀ααα¬λ∃¬∧β⊗(∧xtU3I~α⊂$b
T@
	        CRUNIT	))↓				       ; MODIFY FOR ITS
∩@ K!>,r∩=iαB2&N ∧α=≤X¬∀!Q@∧DDH⊃Rbb∩h)"`Q* a&⊃FA∧DBP∩bb∩h)"`Q* a&⊃FA∧DBP∪RaSd¬MENTS?
		∩@∃∞ <YXTe%5u∩HhαB(¬
q1∀$∧αbb$U)"`b∃ a&"H∀!gg⊃⊂⊂⊂∨%X GRIL¬∩J,
∩Rε∀b∃$∀PH$$∀∧ααα∧Z5$hH∃∀∀Q0(J⊂0SλU*(β!↓(λλ∧∧λλ	(dπEMEL¬)&↑}K0R4⊂λ%α ¬⊂hPα*∀⊂βK@≠≠¬_
#T¬¬,@Q∪h
E*(

85∀ ⊂	Tπ#ENDOFLAG T))
∩PαBε.YX∀`(α≡P∀∃dεDO L¬∪_R$@Q'Q"@J↑
+⊂~∩|22ε≥∧r&!↓*yε@,hItdM8@λ	@$f∀PβE⊂⊂⊂λ⊂∧DDH⊂⊂⊂⊂λ⊂*∀FB∧T∀!SβIMAND8
@QU→↓=αA∩I↓βtTbαX	u~J∃⊃P@J¬
4-∀(	%Tu3Q	XS⊂1d
λ#"A∀λ∧∀&⊂d¬BDA (?%X)  @'∃)"@KU→↓∂#1⊂~≡$A↓m⊗pH4(⊃⊃∩B
IzTd∧w$αDd~:Bα≥YhDjβt[αJJ⊃Q Jα∧ZTt∧z→D,@Qu∩¬∀β"B$∧∃
#!$λλλ∧∧λλ
¬λqs3(→Q∂(¬
p3Q	Zh
	
$∂i3D∧4∪te∃*#"A∀λ	5	Z3Q∪g⊂∀&$Tj⊂∪kRdεDOW %/#WIH
	∨\['∪5∀RR
∀$@Q'Q"@J↑
/∪≥	=*['∪i
@}K8RR
∀$PQπ∨5≠β≥λβi↓"Bb↓!%$πr,R∧Z∧⎇~∃∃⊂hPα(
∧Z⊃u3HInH
	I4u⊂	h  %EDIT-PRINLEH
∂) RR
∀$@Q'Q"@K⊃∪(@6¬∩&:2,r≡B!βy⊗9%Hh %!D~0≤LX→d#J¬
∧"α∧J"βzY`α-∧z5∩JHQ!∩αBZIu,tIw"αDβ∩4jD	t⊃∧∧11∩*E4⊂R)hα"h*∩∀TFEαP∀!bU(P∩bQ$j⊗h∀$g""T*$⊂∨Ig∀TFB∧T∀!Sff`g⊃≤P∀ RP⊂
%X))					       ; INSERTION COMMAJDS
	 (SEPQ %CKMMAN@ (%LENGTH *%X))
	 (AND (%ACINSERT *%X)
	      (!TOUNDO: (LIST '%UNDOA -1* (1+ %COMMAND)))))
↓(λCOMMAND= (BI *%X))
	 (CETQ %COIMAND (%LEJGTH *%X	)
	 (AND (%BCINSERT *%X	
↓      (%TOUNDO: (LIST'%UNDOA 1. (1+%COMMAND)))))
	((COMMAND= (PAI "%X))
	 (SETQ *%X (%INSTANTIATE *%X) %COMMAND (%LENGTH *%X))
	 (AND (%ACINSERT *%X)
	      (%TOUNDO: (LIST '%UNDOA-1. (1+ %COIMAND)))))
	((COMMAND= (DRAFT ?%X))
	 (%TOUNDO: (LIST 'SETQ '%-#DRAFTP %/#DRAFTP))
	 (SETQ %/#DRAFTP ?%X))
	((COMMAND= (PBI *%X))
	 (SETQ *%X (%INSTANTIATE "%X) %COMMAND (%LEN@∂)⊂TK0R$~∀α@!β≥λ@ K¬π∪9'%(TK0R4∀∩@@@@@P∃)∨+≥⊃≡t@Q1∪'(@≤K+≥	=α@b\PbV@∃π↔≠≠¬≥λRR$RR~∀_∩PQ
≠≠≠β9λr@Qλ@PI$}K≤A9+≠¬I R@T∃0RR~(∩@Qπ∃)"@K
∨∪≠β9λ@PK1∃∂) @TK0$R~∧∩Qβ≥λPC¬∪9'%(TK0@|K≤R~(∩@@@@@PKQ∨#≥	<p@Q→%'(@N∃	→Q$~∀$∩∩@@@@@Q
∨∃λ@ Px@}∃≤@`\$@PZ@|K≤@K
∨≠≠β9λRR~(∩∩∩∩@@@QP@}K≤$R~∀∩$∩@@@@@Kπ=≠≠β≥⊂RRRR4∀∩PQ
≠≠≠β9λr@QA∧@PIH@}K≤↓≥+≠¬∃% R@(K0RR4∀∩@QM)"@(K0@P∃∪∃')¬≥)∪βQ
@DK`R@Kπ=≠≠β≥⊂@PK→∃≥π)⊂TK0R$~∀α@!β≥λ@ K¬∪≥M%(@(K0@}∃≤R~∀$@@@@@PK)=+≥	≡h@Q→∪M(@NK⊃→)∃$~∀∩$∩@@@@@Qπ=≥@P x@}K8@`\RPZ@}∃≤@Kπ=≠≠β≥⊂RR~∀$∩∩∩@@@Q(}K≤R$~∀∩∩$@@@@@Kπ∨5≠β≥λ$RRR~(∩PQπ=≠≠β≥⊂z@QαPI$@|K≤A≥U≠¬¬@R@TK`RR~∀$@Q'Q"@Kπ=≠≠β≥⊂@PK→∃≥π)⊂TK0R$~∀∩@!β≥λ@ Kβ∪≥M%(@(K0@}∃≤R~∀$@@@@@PK)=+≥	≡h@Q→∪M(@NK⊃→)∃$~∀∩$∩@@@@@Qπ=≥@P x@}K8@`\R}K≤RQ(@PDV@}K8RRR~(∩∩∩@@@@@∃π∨≠≠¬≥λRR$R~∀∩ Qπ∨≠5β≥λzQ!α@ I$@}∃≤A≥+5¬% $@TK0$R~∀∩Q')D@TK0PK∪≥M)β≥)%β)
@(K0R@∃π∨≠≠¬≥λ@P∃→≥∂Q⊂@TK`RR~∀$@Qβ≥⊂@PKβ%≥'%P@TK04∀∩∩∩!π∨≥λPPx@|K≤@`8R@@!X↓⎇⊗9β	9↓!,b⊗*≡$A↓∃=≤~∃%%Hh($$J↓↓↓↓α↓!m⊗rI%$4PI↓↓↓α↓↓!⊗$zV:∩{Q↓"2M~Q↓≥,"⊗2⊗$*H4(HH%↓↓α↓↓↓"≤z:↓↓BAq↓⎇,q↓A9J↓⎇⊗9J↓"Q↓C	-↓⎇,q%%$hP$$%α↓↓↓↓αA-↓⎇,q↓ε∞|j6ε:"I%%%Hh(%!D~666r⊃e↓E⊃↓⎇⊗B↓⎇⊗eJH$$$HI↓↓↓α↓↓↓m¬∩⊗B2~⊗&⊗u!α∞>ljε:∩_h(%↓B*R>Vt"5i↓Db&NQα:∞I↓E~V
N α:&1∧r&1↓*y∞∞∃JI$4(J↓"∞>t!↓!"
">%↓*y∞∞∃Hh($%D
:⊃↓E~⊗BEβy⊗a↓B*NRJLr≡NV∩↓"⊗b∧b>∩∃βy⊗a⊃Q HH⊃⊃∩ααTITUTE ?%X ?%Y %/#CE)
			   %REPLACE-FLAG)
			  NIL))))
	((COMMAND= (TR ?%X ?%Y))					       ; REPLACEMENT COMMANDS
	 (%TOUNDO: (LIST 'CR (SUBST NIL NIL %/#CE)))
	 (COND ((ATOM %/#CE)
		(AND (SETQ ?%X (%STRINGSUB (EXPLODE ?%X)
					   (EXPLODE ?%Y)
					   %+#CE))
		     (%CREPLACE (LIST ?%X))))
	       (T ((LAMBDA(%REPLACE-FLAG)
			   (%SUBSTITUTE ?%X ?%Y %/#CE)
			   %REPLACE-FLAG)
			  NIL))))
	((COMMAND= (R ?%X))
	 (COJD ((AND (ATOM %/#CE) (EQUAL ?%X %/#CE))
		(%EFAL-ATOM 'DELETE))
	       ( ATOI %/!CE)
		(%TOUNDO: (LIST 'CR (SUBSTLIL NIL %/#CE)))
		(AND (SETQ ?%X ( ')I∪∃∂'U∧@Qa!→∨	∀@}K0$A≥∪_J↑Gπ∀RR~∀$∩@@@@PKπI!→β
@A→%'(@}∃0RRR$RR~∀$PQπ∨5≠β≥λt@Q!∀	↓⎇⊗@↓⎇⊗eJH4(¬αA⊗B≡,r∩=iαB2&N ∧α<≥$¬¬≥,*:B∧t→D∧dLD∧Rj≤8U∩JHQ!∩αB	H∀l∀H∃α-∀X	D≤UXddu⊃PPJ∧∧αD⎇!Q Jα∧∧ααDZ*%≤-D¬α,e8X%≥$~JU$*¬tUBα∧Y∀e≥H→e$L~HRβz[∃∩α*t84*J⊃Q Jα∧∧αB4∪t¬∃#"B$∧λ	4HZ⊃⊂0hU1S⊂(u!"B$∧∪R3¬∃!"B%¬⊂ss)X3Qπ$¬∃∀∀H∀∂i6∧πi6*%⊃"B(¬∧αj'jS #]⊂
&$ijλ∪ai⊂
)ja)U⊂'$fλ'$f⊂	Tπ#CE)))
	  ⊂Q1β∪¬	∧PK%A→βπ
5
→β∞$~∀α@@Q∨$4∀∩@@@@QI%'(P@⊗N,∩NB&%*R¬↓z*a↓!,J2NRrR&ε$)↓⎇⊗JI↓∃=≤~∃%$hP%↓↓α↓!-	zαJHQ!∩αα∧Z$-∧H_4*@1S⊂(u!"B$∧∪R3¬∃!"B%¬⊂ss)X3Qπ$¬∀⊂	 * 0R$~∀%αBN⊗Rλ↓)εaαA⊗&:≥"ε*RL
R*¬$UBJ⊃Q Jαα⊂sihα⊂∀∀∪i⊂∀∞H∀∩f"S πTHTK0RbP→%αB2V2b↓∃ :89∧Le∃⊂hPα"*∧Z⊂πjg⊃']⊂∀∪$ij 'CR (SQBST NIL L¬∪_@∀X
∞∞*I%%$hP%↓↓α↓↓↓↓E!↓!⊗αIu,@Q∪nD¬⊂ε$iU⊂∪aiλ∀)`∃BSP NIL @≥∪0@B↑G
RR~(∩∩%α↓↓↓≥@∧T`(αhλ@(αH4(⊃⊃∩αα∧¬∧dM8@λ∧t53Q	X( _Kα  ⊂K1⊂~≡$A↓)⊗β
%∃**#!∧P∀'T⊂⊂λERRSEDP@⊗∞α(U∧d_8RαRXε∀JP⊂λ%PLπ @%¬!%$Q!∩BD9yTlh@∂$¬⊂t@⊂
⊂¬P))
∩@!β⊂≡~ ∧αBDβt@¬παP∀%LENGTH  ∀K`R@b\αI↓"~αYDbαUt49⊂23E∃ εE∧BT∩b'UdεDO: (@→∪M(@OπH@Q',∩NQαtJ1α~La↓∃=≤~∃%%JH4(∀∧ααα∧∧αE"¬	*Iu3Q	WH
∪	~uλ	h~H
∀jXTu⊂∪αIL NIHλ@J<@∞∞∃JH4(⊃⊃∩αα∧∧rB,h[¬"Hβ"B!⊃(λλ∧¬⊂ε$iU⊂∪RjS ∧GAZb\@ K⊃≥≥)⊂@T∃0RRR$R~∀∩P@⊗∞α(U∧d_8RαRY
%⊃"B*¬λqs3(→Q∂ ¬λβ⊂∨RT j⊂∨Il⊂	)			∩@@@@@rA'¬%π⊃∪9∞Aπ∨5≠β≥	L~∀%αA⊗BzYd${$¬∧dM:@λ∧t4Q4jItQ+*:⊂5⊃!Q@∧DDH∀ IST 'QUOPE %-#CHAIN)))
∩@!∨$@P∃
∪≥λα↓⎇⊗B
!↓E9βy⊗a∀¬¬¬∀xr"αBZ	uαJ	i∀bJ∃⊃PPJ¬λ4llX→d#J¬λbβzZλ∃"J⊃Q Jα∧ZD⎇hIsBα	I∃≥"∧tU∀-:Iu∀*Z:D
$QQ HH∀¬∧dM:@α=
YzD*αUt4≤D→→bJJ⊃Q Jα	z"αBXi∀tαπtU∧
Dε∩rβ∃a∩αE
)t;∩¬∧U∧⎇¬∀∧tLE∃∩Hh!∃αD≤yYTtGTαD∀dπr-∧~Dβz-¬∃⊂hP∀¬α-$zYd${$¬∧dM:@α:-(Z5$⎇(UU≥$~HPhP⊃⊃∩αDI~5"αz~T⎇$T∧Rz≤9λ∀Lr∃∃⊂hP∀¬∧⎇∩¬∧T4Lh@βz-λ~Bαk∃dβz-¬∀αE¬)xs∩α∧Z∧⎇α∀	dLbα**!Q@∧T∧⊂gff`S"≡P∀⊂#⊂∨RT j∀TCE	 (%PGUNDO: (LISTNK%M)∨%
5')β)∀~∀α∩$@Q2M~Q↓≡
*>@$T∧Rj≤9λ∀LR∃∃⊂hP∀¬∧⎇∩¬T4Lh@λπt4⊂5∧¬,+Hε∃J(


SqdD¬	4∪j¬(∪R)E**#!!*
⊂i@df`g⊃≤¬ (MATCH}K!βPRR@QA%∨∞dQ'	D@K→βM([!βQ)%≤α↓⎇⊗B
!$4(HH$%↓αA"2εl∩∩¬!*y∞J⊗$
&9$hP$$∧J↓↓!⊗l
R∞!βy⊗Bε ↓∃ :88RJJ
@
!Q@""!∀λ
∀hZ∀(	)H4u(9sU∩)j1+4jH0rh∧UβQagS*$g*QVij PeTTTBDP⊂⊂λ⊂⊂⊂≥H) g"∪d¬ COMMANDS
	((CGMMAJD= (MATCH ?%PAT *%X))(PROG2(SEDQ %LAST-PATTARN}K!βPR~∀∩$∩∩α@@@PQ1β∪¬	∧PJ↑GI ∩εLq$4(HH$%↓α↓↓↓↓α↓↓↓↓αA⊗6ε$~!↓⎇-αεQ↓*yε∞∃αQ⊗a∃∀¬"HQ!⊂HH⊃∀ααα¬
4-¬∀∧Td
:AT≤\hI∀u,UZ5$91PPH⊃⊃⊂HJ∧∧R`4pssJI3U1%Zu⊂0i5**#!!*
⊂i@df`g⊃≤¬ (REHβ)
⊂@DK`RRQ!I≠∞dA9∪⊂@P!→β≠¬⊃αPJ↑
%)β%_	$Q!⊂HH⊃∀ααα∧¬α,≤βsU	→U1+)X5⊂r∧∧3⊂4jE4⊂5
H4S@⊂	Tπ#CE 
∀∩$∩∩%α↓↓↓↓α↓↓↓↓,bεNQl~6 5I→e,*Z:D≤4¬"-Bα*(
E!"B!⊃ ∧DT∀bj(@ %HAST-C@∨≥Q∪⊂~V*jNRε≤Y↓∃=≤~6 5I→e,*Z:D≤5∃∩Hh!∃αD≤yYT@Q∂(¬
p5Q$¬I2∀JFE∧DBT)bj∀P∩f Th⊗`∪ATA-FILA *%X)~∀$∩@@@@@@@!!%∪≥P@PK∂I∪ ∩⊗2↓⊗@$z¬T,$~ET-E∧¬"-Bα**!Q@*αλ9q30)H∂(

(1R3λTλI6¬∃!"Na∀
⊂
"T()$TCE→DP
()$g⊂P∪})[y9<Vλ92s4[2P27Yyw∪zλ;wy5H82w2~w3P3~|2yP≥4π GRIH
	x$~∀`,J↓"R⊗∃αJ%$hQ%↓EαJ&:"↓!εJ,2& $T¬∧
$¬"-B∀¬∧≤J αR-¬∀αD≤_HE∩α$[αJJ⊃Q"JJ∀↓PPH'72Wε≤|PhPc[573K[773@7nnng↔h→]-l⎇~3mnh≥≠d
8π{"H0y7z[2⊂:4→P:92YP≥]]N]]]]N]FEεB∀""c∃g⊂∩b⊃iabg⊃⊂∀'∧HεE⊂⊂λ⊂⊂⊂⊂∞]P6w]2yP*~2P!bH:7P*~2P7:~⊂2v %mant of the cuRpent AE.  ib 
       ;; n < 0 theN counts from e@9HA←L↓iQJA
\4R↓↓↓↓α↓↓"∩,~2εJ*↓"
&DrV5αrI$4)α↓↓↓↓α↓"ε:"↓!aαr↓A9%αBN⊗R
α0∩α¬4∧bβ∃`αB,HYd=$∧∧Rz≤8U∩JJ⊃Q"αα∧∧αααλ→d"α	HU≥≥∧εαr∧d¬β
Z¬∧Td,hzDBαUt4≤*∃∃⊂hP∀∧αααλ
U≤B¬λ4|u4∧Rz≤8T∧rJ∧Ur≤≤λ→∀bHQ!∩αα∧¬∧⎇∩¬
4-%∀∧Rj≤8TαB8~$`$	+hh8(∪J%∀∃
*%∀β"C!%⊃⊃1JYH	0*8q3Q∧	R3λ↓QHλλ∧∧λλ∞g4≠8:l↑h≥~T⊂q(∞M→(→L≡→<H
|H≥~T_⎇4N;]λλ_+Hλ∞,=≥4MnnB#!$λλλ∧∧λ∞fd
~→(∞={K;N]8Y<D<xq-l→9⊂→97v@≠y⊂'$S⊂4s⊂≠7P30]42y↔λεE⊂⊂λ⊂⊂⊂⊂
 g"⊂	UQad⊂dgεEαP⊂⊂⊂
()'cL⊂'$fβE∧DPλ⊂∀!b⊂i⊂∩WHa` dS∀BE∧BP⊂⊂∀∀bj(P	WQabH∀!``T⊂∩WQPd dg
P∩WQPd dgλ∀!b)λ∩WQaR dg∀JTTTPβEαE∀⊃"c*gλ∩g"l∃⊂'$fλεE⊂⊂λ⊂⊂⊂⊂∞]P6pZryP:~2P!bH:42Pλ94st≥⊂197]42y⊃λ7s⊂:~2P1j\92w:λ!bW⊂βE⊂⊂⊂λ⊂⊂⊂≥Ny2z:\79P'∩f⊂4sλ1zy9→w:⊂!QP4yP≠0yz~w⊂0@ list.
       (AND %-#CHAIN~∀$@@@@ x@Qπ⊃β$@J<Cπ↓β%_R@P∃→≥∂Q⊂@Qπ¬β$@J<Cπ↓β%_RRR4∀∩@@@PK	∃'π≥⊂@PbVP@⊗ε≤~⊗ 4E∃∩JJ∀↓P@h%λD,5Y`α,∀Xiu∀(∪R)Dβ"H∧∧λλλ∧πnh≠,≥y<h∞M→(⊂lT≥~→$∧[→9ND_\[nM→<HD
yH∃
(_p~\92w:λ1rWλεE⊂⊂λ⊂⊂⊂⊂∞]P)2]8¬rns nil if cUrrent ce ipεAMSβ∪OQβLqβS#*β3'O"p4)↓α↓↓↓↓αBε:⊃α)5∞∞D
& 2¬βbαD8H∃∩αUt4≤D→→bJβ∃a∩αBXHU≤≤YhBαC∃TαB04phYβ"∀TJTTPεBεEεE∞P*42\pP3*[1z4w[9P1y→pz2P_w2⊂8≤4w:⊂≥42P⊃≥tw27]Q⊂0q≠zz⊂ 4he %/#ce.

(DEFUN %WANDOS (N) 
    (DECDARE (FIXNUM L∧RR~(@@@@@@Q!I∨∞@P∀X
∞↑Lr∩>]m~Rε∞ZI4(J↓↓↓↓αA⊗↑&t">]64zJ↑ε∀!↓∃=≤~∃↓∃z~∞"εLqα9$hP%↓↓α↓↓"N-"E↓∃z~↑&:$zU6N$
∞-↓DrJ⊗Z-∩N∃↓*y∞↑&t">]6≥"ε∞
JH4(%α↓↓↓↓EαVN!α)5∞∞*↓∃ ::y∀t∧zuU≥$_92Hh!∀ααα∧¬α-<→hD⎇:X(∀≤Z∧Ur≤≤T∧Rz≤9λ∀LR	e⊂hP∀∧ααᬬ∧dX(D
αλ∧∀I→S⊃5HYλ∀∀I→S⊃3Hz∩
(↓QB"(∧∧λλλ¬	04λ¬λβ*g!U$gg
& fa⊃ P∀,
P⊂ )∩dεC (CAR X))
						  (CON@λ@P!∨$@Q∃##β_Qπβ$↓0R@OpQxR~(∩∩α∩$∩∩@@@@QE+β_@!πβ	$↓0R@OpSx@%JH4(∧HH$$$JBQ↓"¬∩& 44∧wbπE∃∩JJ⊃Q HH∀∧αααUt5<LhIu*m:H∀≤Z∃⊃PPJ∧∧ααα∧XT$MEZ¬∀LiHTt≥I↓PPJ∧∧ααα∧XT$MEZ¬∀LhHU¬$¬∀ααQ!∩αα∧∧αE∀XJU∀r
A∩JHQ!PRDHXe,r∧ZtLTIzrl∀_92αBUt4≤*∧Ur≤≤λ→∀b∧e∀hR∧∧αD⊃0sλ~Q(
λi6∪U)T∩(∪E∃#"H∧∧λλλ∧¬⊃∪h¬¬⊂(%d
*d	***!QB(λ∧¬
∂λ	d∩*(¬λssQ∧¬
	0HXStQ%∀
⊂∃*9λ	␈¬eK←λ∧Uhur)h∪uk*:⊂0re∃#"B!⊃(λ
¬∧04phYQ
(¬
∃0r∧∧␈
∨∧∧+hui→Q∪ueZu⊂0i5***!QB(λ∧¬⊂ssHD

	((1StHU(
∀
Zrλ	%tpq(∧Uhur)h∪uk*:⊂0re∃#"B!∀

	(~pq3HE(
∀
Zrλ	oE∨λ	%tur3HIuk4jH0rj%⊃"B"$¬∃λ

(5∃4Id∪R3¬∃***$↓"C"Eλα"c*S⊂∩kdS"'kVQ'i+`T"⊂∀∩KQabP	Tπ#CHAIN N) 
   (DECLARE (FIXNUM I N))
       (DO  (I 1. (1+ I)))
	   ((< N I) (CON@ ((%NEHT) (@USH '|...| %+#WINDOW-STACK))
			  ((%ASCEJD)
			   (PUSH '|)|  %/#WINDOW-STACK))))
	   (COND ((%NEXT) (PUSH %/#CE %/#WINDOW-STACK))
		 ((%ASCEND) (PUSH '|)| %/#WINDOW-STACK))
		 (T (RETURN NIL))))) 
;;*page
;;;;;;;;;; functions foR inserting stuff ;;;;;;;;9; 

(DEFUN %AINSERT (L N) 
       ;; insert l abter the ce's nth element.  returns nil if "n
       ;; " can't refer to an eLement of the cE.
       (@ECLARE (FIXNUM N))
       (AND (MINUSP N) (SETQ N (+ N (%LENGTH %/#CE) 1.)))
       (AND (LESSP -1. N (1+ (%LENGTH %/#CE)))
	    (%REMARK N (%LENGTH L))
	    (COFD ((NOT (ZEROP N))
		   (RPLACD (%CDRN %/#CE (1- N))
			   (NCONC L (%CDRN %+#CE N))))
		  ((NL (%CARN %/#CE N)))
		     (%DESCEND N))))) 

(DEFUN %BINSERT (L N) 
       ;; splices in L before the ce's nth element.
       (%AINSERT L (1- N))) 

(DEFUN %ACINSERT (L) 
       ;; splices in L after the current expression. 
       (PROG (N) 
	     (COND ((SETQ N (%ASCEND))
		    (%AINSERT L N)
		    (%DESCEND (1+ N))
		    (RETURN T))))) 

(@EFUN %BCINSERT (L) 
       ;; splices in L before the current expression. 
       (PROG (N) 
	     (COFD ((SETQ N (%ASCEN@))
		    (%BINSERT L N)
		    (%DESCEJD N)
		    (RETURN T))))) 

α;;*page
;;;;9;;;;9 deLeting functions ;;;;9;;;;9 

λ(DEFUJ %DELETER (NM) 
       ;; deletes M elements od∧AiQ∀AGJX↓EKOS9S]NA]SiPAQQJA≥QP\~∀@@@@@Q	
→β%
Q
∪19+~A≤↓~RR~(@@@@@@Q	<A∩@b8@PbV↓∩R@PxA∩A~$@PK	∃→)
↓_RRR~∀
∀!	
8@K	1 ∩∃αB9%hQ↓↓↓α↓↓↓mZβ∪↔3/#↔Mβ&C∃β;&Aβ↔3.k↔;Q∧{⊃βSF)β∂∃ph)↓↓α↓↓↓↓D"⊗∞H~$*αλi∃DuYT∧`%*#"D∧λλλ∧∧
⊂sihλ

	Y3U4j∧∪J(¬
q5∀$	H

d	H
	)H3Qu	∧	+hh8*(%E***!QHλλ∧∧λλ


Sqh¬	*(β!!(λλ∧∧
⊂sihλ

	iuλ
	H4tt∧εH∪D¬*`¬∧3⊃3Hz∩λ	%tpq*%∃*#"A⊃(λλ∧¬∀Q5
ZSH∪I→λ*#!!"(λ∧¬
H	D+B!Q@"(∧∧λ
∀J	⊂0q∧¬	0q
)H	+d_q(
¬T∪HEe*(
∧Xq∀SD∧+hphT⊃J*%⊃"B"$∧λ

	j3∪λ∧UβQad⊂dg∀FB∧DP⊂λ⊂∀)bU(P∩WHabP∀⊂b)⊂∩KQabTH∩j'hbb$jbl(⊂	Tπ#CE))
		   ((SETQ M (%ASCEND))
		    (RPLACA (%CDRN %/#CE (!- M)) (CDR(%CARL∧@J↑
π
A~$RR~∀$∩@@@PC	Mπ≥λ↓~RRR4∀∩@@@@PKI⊂⊗ε∀Yα9↓k	1$∀PI↓↓↓α↓"J⊗αJU∀r
@
%∃(β"AQJ⊃⊃(j3H	(8⊃3⊃*H(∪R)Dβ"H∧∧λλλ∧πnh→]→=→$∞~→(><\Y-nλ→6∞∞Y<|m≥{K@∧∞Y=≥.-\h≠M≥λ~9D∞~→(<(β"D∧λλλ∧∧∞nh
≡h≥~T≥≠|¬]→=Y-D→>≤∞,<|r-⎇KC"D∧λλλ∧∧
⊂3HD	+hh→⊂23D¬	1⊃)H5⊃(¬∧α`iaQdεD)))) 

3 6)aCOJ~∀_vvvlrvvvlAk]I=S]NA→k]Gi%←]f@4∀∩∀Q⊃
+≤K%'Q∨%
[M)β)
Q≥∂
⊃β∪≤$@~∧@@@@@vvAk9IWKd↓M←dAQ←`HAαSW7Abβπ;⊃¬≠↔πK≡C';≥ε≠?77∞s∪M_hQ↓↓↓α↓↓↓"≤*RE↓*y∞∞"J1α:-:∞"εLq4(J↓↓↓↓α*R>Al*∩&Ql*bA↓D~εεIαB2εN"α:ε↑≤Bε&9JI4λJ↓↓↓↓α)5∞∞*↓"∞≡t!↓"~-:∞"εLq↓!⊗≤
J9↓D~εεI∧r⊗↑∞D
&9$hP$$∧HI↓"∞$
Iα:-:∞"εLq%%$hP$$¬@∧U$⎇¬XT$MEXUEα∃∃∩JQ!PBDHXe,R∧ZTt$x⊂λ¬	H∪"$↓ Hλ∧∧λλλπ7h≤X-l≠{(∞]Y≠y.%Hλ→]→=→.4≥~→$
]~λ∞M≤](
↑~λ→-L;93NNh≠yD∞~→#!$λλλ∧∧λ∞fdy+H∧¬⊃⊃0iH4Q(¬λR6∪JY(⊃⊃)Zλ∪H	U*#"D∧λλλ∧∧
∀∀Ixh
∃λY4
(↓QB(λ∧∧λ
∀hZ∀(∃λYαh⊂∀	`iabS ∀TFB∧P⊂⊂λ⊂∀∩b⊃f"j"T⊂*"fT⊂∀⊂VH&TTFB∧P⊂⊂λ⊂∀∩b⊃iabg⊃⊂∀∃P∪⊂*"fT∀TFEαP⊂⊂⊂λ∀)"j∃i'⊂*
TTPεBεE∀"⊃c*g⊂	jg"'Ribj⊂∪$f⊂εB⊂⊂⊂⊂λ⊂⊂≥]H:s27Yy⊂3'\⊂∪wuIW⊂⊂9→yz7y→yP29_q:⊂ [2⊂:4→w⊂2`6als draft.
       (COND ((EEMQ  CAR %TOP-EDIT-EXP) '(DEFUN DEFPROP PUTPROP DEFINE))
	      (PROG (NAME) 
α		    (SETQ L¬β≠
PC∂Q≥β≠
K)∨ 5	∪(51 R$~∀∩∩@@@QI)+¬8@Q	∪M(@OYβ_~∀$∩∩∩@Q→∪'P@O!Q!%∨ 4∀∩∩∩$∩Q→∪M(@O#U∨!
A9β≠
R4∀∩∩∩$∩Q	∪M(@O#U∨)
~(∩∩∩∩$@@@@@Q∂PA≥β≠∀@O	%¬
(RR4∀∩∩∩$∩NO	Iβ
(R$RRR@$R@~∀4∀Q	→+∀@KQ∨#≥	<p	α~-BBI↓D20≥∀Z5∩h$∧ααα∧∧βKZ∞∞W≡F↑4ε6@|[<d
{]≠d∞~→(∞]Y≠s
≡⎇C!$λλλ∧∧λ
⊃λXpε i⊃P⊂λFIXNUMJ))
        AND %/#UJDOFLAG
	    (PU@' @Q≠βAββ$@!
+≥πQ∪⊂≡→∧*Zε1Jα~>Jm→%↓∃z~V*∩|b&NQHh(%↓α↓↓"∩z↓!"∀∧Rj≥YhD|D~:BαD8J"∧J∃∀αDR∧⊂D¬*`⊂∩∀TTFB∧@T(NULL I))
		(CON@λ@P zA)α*V:∩⎇
2⊗:="!$Q!⊂Jα∧∧ααα¬
%∧d_8B∧J	i∀bHQ!⊂Jα∧∧ααα¬
$-¬X∧SD
λ**%∃#"H∧∧λλλ∧

(β!!"J⊃λXU3@∧Z∪tλ	I3λβ!$λλλ∧∧λ∞fd∞≠x≤d∞~→(∞]Y≠s
≡⎇C!$λλλ∧∧λ
⊂)hλ	+d~3Q∪hi⊂1c!!(λλ∧∧+hu)h∪s∩*:β"B$∧λλ


SqlD	R3β!!"(λ∧¬⊂p4D∧+hu)h∪s∩*:
#"A⊃(λλ¬
q5∀$∧+hu)h∪s∩*:λ
⊂hJH	+d:3Q∪iI4uα%∃**(↓QA"JλH1Q3D∧4p5HY04Rd	R3λ↓QHλλ∧∧λλ
	I4u∧zq5∀!Q@(λ∧∧λ	a)X4Rpiλ23C!!(λλ∧∧
∪∩*:λ	t*Yu⊃(∧Yα`i%Pd dg
FE∧Pλ⊂⊂⊂∪Id`i%Pd dg∪"g#j∩∧@
	     %MARKCHAINLEH
∂) RR@~(~∀fV)aCOJ~∀_vvvlrvvvlrAMk9GiS←9fAi↑↓S]Si%CYSu∀AiQJ~∀vvlrvvvlrvAK⊃Si←d↓iP≥βλβ;↔]∧∧g.v>M⊗}rd↓PPh%λD,5Y`α,$~H∩lLi~B∧4Xε∀
$
⊂4Hzh(β!$λλλ∧∧λ∞fd∞≤<⊂∀Xpv⊂ !rgs: 	(data)anit <function> ,@→SYJ[MaKGfxAeKiUeP≠M∧≠?7Cd∧W&*∞>ε.≡≤i⊗≡∂M≥vw~aQ"αα∧∧ααα

$|:¬
5∧0pj$↓ B(∧∧λλ
λ→Qλ

85∀ 
:⊃0tdλ4Qte∀λ∧#gH)j i∃∀TFEαf→⊂⊂λ∀∩h⊂	|∀⊂≤Function nama0≤@qISIJ↓caKGαK⊂⊗N<≡FN}n7bJβ/E⊂hPα(λ∧∧λ∩r(iH⊂	`Rd⊂∀$SαITED)(ADDED (CMJD ((9 (LEH
∂) A'!
&R@bαI↓"∞
⊃αNB,~M%$hP$$∧HI↓↓↓αBQαN∧*∞M%JαQ%"dzε∩⊗"Jt4(J↓↓↓↓αBN⊗RλαNB⊗≥→↓"J,
⊃%$hP%↓↓α↓↓"εt!↓"ε$z5αNαλT
~∀¬¬≤-J⊂¬≥∧X:2αDI~5"¬:λT≥~∃∃⊂hP~:D
∃Eλ4|@Qλ
¬λ450)D∀t⊃(~h	j	h5j*!Q@"(∧∧λ
∀hZ∀(	*It1(I51+
λ∪R)E*#"A⊃(λ묬⊃0λjPf⊂)h⊃aiP∪J*g"'JTP∀)⊃h∧U@%8A(BR4∀∩α@@PA≥U→_@Q
	$AπAπ&R$~∀α∩@@@Q=$@Q'∃)"@KQ≠ K⊃∪(@6-BA↓!,:⊗R∩,1↓"∞
⊃αNB,~M%%Hh($$JB≡=αc⊃%%$hP$%↓α↓!!yαA⊗"⊗t:R!α≥α⊗∞MJ↓E)$hP$%↓α↓↓"≡∩↓"N⊗%	↓⊗R⎇↓6⊗∩M!6⊗Bα↓!-(X∀$∩¬λ4
∩
:∧,≥5⊃PPH⊃⊃⊂HJ∧∧ααD8J"¬≥λX5~J∃⊃P@H⊃∃∧<z	F"JJ∃⊃PPJ∧∧ααα
8U%
∧Ur≤T∧U$⎇¬XT$MEXUEα∧Ur≤λ→∀`$∪R3¬⊃ B(∧∧λλ

(5∃4Id∀p⊃(~h**$↓ C"Eλα"c*S⊂∩cbU' fbH∀"d(
PεE⊂λ⊂⊂⊂⊂λ≥]P \βsumepεAKq@ASfA∧AMk]
iSO\αβ∪↔≠L¬fO&≥⎇bbα∞,W'<[\d
=≤h
l8εrFB⊂⊂⊂⊂λ⊂⊂∀ S ∧ (x@PK→∃→≡R@∧∧-E¬∀β∩r⊃Q Jα∧∧αDlYZ∩αD8~"∧
α⊂
$∧h∧""Q*g⊂"⊃c$g"H ∧EFPROP PUP	!∀zA%$hP%↓↓α↓"∞yhBαBα∪1)Z(
⊂h_∀H⊃+
λ∧P∪J ¬P⊃↓HA~⊗β
¬∩∧β⊃6

H∪0(~Sj*!Q@∧DPλ⊂⊂λCAD@	$A∃1 @%Hh ⊂Hα(λ¬
λ
⊂h_∀H⊃+
λ∧TTJTPεEβE∀""Q*g⊂∩Qbj""Q⊂⊂λNAME) 
λ       +lAOKiLAaQJ↓IKMSαs'S'|qβ >dλ

(→P~[1z4`/n @≥β5
P_Q$ααα∧∧ααEλ∧Shtλ∧#⊂⊃P λ TYPE TRACED?) 
	     (COND  (SEP	"A_@Q∂PA≥β≠∀@G	%¬
(BRQ%%*J9α2I%$∀∧ααα∧∧β@5⊃q5∧¬KK@∀H+`iP
⊂¬GETD@@λ∧α`%KJ#!↓(λλ∧∧
⊂q*J(⊃H¬λ4⊂⊃)Hα⊂∪D⊃l( ∩↓
β1¬⊃α2⊗β
¬∩∧X_5∀z⊃Q HHα(λ∧∧λ	1(I5∀∀I@h"a*∩biTPβE		   @ F
∩∩@A)%¬πλ}Qβ≥λQ')βQ+&A
∃β!+∀*MαR∀
ε∃$hP$$⊃∃∧<-IDα=%(_4(h!⊃⊂HJ∧∧ααα∧q∧4-λ
"∧∃8X%∩∧β⊃6

H∪∀jXTJ*!Q@∧DDBT"bfTP ∞AME  ⊃%∩ε∞∃JI%$Q!∀
α∧∧αE≤XJ∩¬%~λRαD8~"∧2∀λbαD8J"∧2∃⊃P@J∧∧αααλ8U%
λpλ¬λpπg"λ∀*) Pbb∨P
 πED(CDRQ≠≠DA)3!∀@Q!→%' ⊃αt
6∃%JH4(⊃⊃⊂HJλ¬⊗*λ**#!∧@DPλ⊂⊂∀#Qh∧ NAME @)e!αRR$R~∧∩@@@@!β∨: ∧αDh
∀HZα*`∩N (%MAKEDEF NAME C @)e!αRR$R~∧∩@@@@!β⊂~⊃∧1↓"≡zα¬%$hP%↓↓α↓↓"∞|r⊃↓"αJ$≤XCphPα(λ∧∧λα(∧∧λ
↓-≥yi(
J@εE∧BP⊂⊂⊂λ∀∩h⊂	|∧fuNctioN| FAME 'l@Q`π∂,∧Bε↔↑@λ
m⎇λ⊂∪≠zs2, wil@0Ac@;'∪π∂∃pq3q¬Hh ⊂J∧∧αα∀∧αααλ~¬∧e∀∧u,UJ(∀≤*¬	d@qPh	@ fbTJFA∧Pλ⊂⊂⊂∧H⊂⊂⊂∀∀bj(@⊃⊂ ⊂*∀ abb∂P ∞IL)
∀∩@@@@$@@@@!∂≡Aα$RR4PI↓↓↓α↓!.α;qdT∃∃C!↓ ∧P⊂λ⊂⊂∩hλ⊃xfUncti@=]xA≥¬≠
@Oq]WhAα3?Wl@∂oE*#"A∀λλλ∧¬∀Q5
ZSH∪I→α⊂	)) λ
(hQ"$XjT`$	30)81⊃1D¬⊂π fQP"`_P TYPE) 
       (COND  ⊂Q5⊂⊗E¬"fB∃α9"-α⊂∀Dλβ"`_PR @→a!$A≠¬∞J=JH4(∀∧ααα∧¬∧9β`∞C 'DEFUL∧⊂∀(HI↓↓↓αB≤@pπ ∪ L¬β≠
4⊂λ$⊃∀ααD9yd"αα
⊃*∀∃⊗4λT	q6

J#"A⊃ ∧DP
!ch,H∀!b)λ ¬P⊃αI%$Q!⊂HHα*∀⊂βH∂:α4¬%MλTαD≤z∩αD8J"∧4∧ ⊂))))))(DEFUN %GETDEF1 (NAME) 
       ;; looks for definition of function "name" as a draft copy 
       ;; or the current ce.
       (COND ((EQ NAME (%GETNAME %TOP-EDIT-EXP)) %TOP-EDIT-EXP)
	     ((GET NAME 'DRAFT)))) 

;;*page 
;;;;;;;;;; functions for replacing forms ;;;;;;;;;;
(DECLARE (SPECIAL %REPLACE-FLAG))

(DEFUN %SUBSTITUTE (A B L) 
       ;; like subst, bu@PAkgKLAeaY¬GB@L↓eaYC
H\~∀@@@@@Qπ∨9λ@PQ∃#+β_↓αA_R!')"K%!1βπ
[→→β∞APR@Qπ=!2A∧$R~∀∩@@@@ Qβ)∨4A_RA0R~∀∩@@@@!(@Qβ9λ@Qπ⊃$A_RQ%!→¬πλA_PC'+	')∪)U)
Aα↓@Qπ⊃$A_R$RR~∀$∩Q%!1βπαA0@PK'U¬')∪Q+)
A∧A∧@Q
β$A_$RRRR$@~∀Q⊃
+≤K⊃',∩NR&%*R∃↓D	α	αbI4)α↓↓↓↓α↓mmβdK/¬↓/≠WO&KS@/LUBε↔↑@ε␈ε↑,↔&/4	vrεM≡7"π>N'.∨NZ&*b
mw"πN,V*π>N'.∨NZ&(h$∧ααα∧∧αD≤yhBαBλZ∃,Dλ∩∧b∀¬¬≤-J∀α-∀X∧∪λ_q+1IH1h∃¬∀λ⊂sj(⊂J%⊃"B(∧∧λλ
¬λ5∪s$	
(∪¬⊃"B(∧∧λλ

D
⊂3HD
⊂q
$∪
(¬∧αf)jP)j$j∃j"P H!⊂∀!Q)⊂&∀JTFE∧BT)(&⊂a`P&λ∀∩f)Ua)j$U*j"P⊂P!⊂∀⊂`i⊂&
TTTTJFEεE
 "af⊂i"P∀∃g)h"Pd`f⊂	i"h&⊂abVc∪ cTTCEεE∀⊃"c"gλ∩a`∩EPLACE (D) 
       ;9 splices the list L in where the CE was.
α       (PROG (N) 
	     (RETURN (COND ((SETQ N (%ASCEND))
			    (%REPLACE L N)
			    (%DESCEN@ N))
			   ((NULL %/#CHAIN)
			    (SETQ %/#CE (CAR L) %TOP-EDIT-EXP %/#CE)
			    T))))) 
¬
(DEFUN %REPLACE (L N) 
       ;; the nth element Of the ce is replaced by splicing in the list L.
       (%AILSERT L N)
       (%DELETE N)) 

(DECLARE (SPECIAL *1 *2)) 
(DEFUN %STRINGSUB (OLDLIST NEWHIST WORD) 
       (PROG (*1 *2) 
	     (RETURN
↓      (AND
	       (%MATCH (APPEND '(*1) OLDLIST '(*2))
		       (APPEND '($$$)
			       (EXPLODE WORD)
			       '($$$!))
	       (READLIST
		(REVERSE (CDR (REVERSE (CDR (APPEND *1
						    NEWLIST
						    *2)))))))))) 

;;*page
;;;;;;;;;; functions for reforming the ce  ;;;;;;;;;;

(DEFUN %MRPI NIL 
       ;;; move right paren in.
       ;;; i.e. the last element of the ce is delEted and then iNserted
       ;;;       as the ce's right-brother.
       ;;; returns nil iff the ce is an atom oR has no father.
       (PROG (TEMP N) 
	     (OR (AND (NOT (ATOM %/#CE)) (SETQ N (CDAR %-#CHAIN)))
∩∩Q%%*J9αtJ1%$hP%↓↓α↓↓"N-"EαR,jA↓"d
NQ↓*yε∞∃JH4(∀∧ααα¬T$,HZD*αα	3λYβ#j$λ∩WQaQTTFEαP⊂⊂⊂λ∀∩`iPbg"∧CE	     (¬AINSERT DEMP N	
∩@@@@QI ∩Vα)bαBXHU≤≤YhB∧r∃∃∩JQ!P@%⊃⊃1JYβ⊂∩fT( ∂ NIHλ@~(@@@@@@vvlAS@?4∧Rπ⊗≤⎇π"π≡&.r
x
.E@εE⊂λ⊂⊂⊂⊂λ∀( ∩OG  @)∃≠ A≤αI (!∀ααα∧¬∧`:H
⊂)Hα⊂∀)Qh∧Q N (CDAR %/#@π⊃β∪8RR4PH%↓↓α↓↓↓∧πλ	@⊂⊂λ%LEH
∂) @Qπβ¬$@J↑
∞"εLq%%%Hh ⊂Hα(

(5∃4I@⊂ ∞IL))~∀$@@@@P@⊗ε≤~⊗ 4E⊃P@!(λλ∧∧λ⊂	bU(P ∀EMP (∃∞εJp∧α*@hpq$¬*`⊂∪α)))
λ∧∩@@@@@K⊃⊃$)↓!EX∧∧`%*#"A∀λλλ∧¬	1⊃*8q3Q∧	J#"A∀λλλ∧¬∀Q5
ZSH
∧X23ThZUλ
	hqsTd
⊃34¬∀λ∧∩f⊃dεGTH %/#CE))))) 

λ∧Q	→+⊂→↓,j2B¬∧r& "↓Q"αα∧∧ααβ74εn␈lTεf.n@πε∂,YbεNeaPRα∧∧ααα¬
¬∀|t¬¬$,Z∧∧bJ↓Q Jα∧∧ααDz$αE≤XJ∩∧r¬λ4$
$∧R`4pr⊂)→J*(¬
Q0
*T'⊂'$S∀TFEαP⊂⊂⊂λ∀)bj∀P*"fT⊂∀!`T⊂∩WQPbTTFB∧P⊂⊂λ⊂∀∩b⊃f"b"H_W∀FB∧P⊂⊂λ⊂∀∩`Tabg"
FA∧Pλ⊂⊂⊂∀	a$g)Qi*⊂∀∪!gg)H*"fh
P#∀FB∧P⊂⊂λ⊂∀)"U*i'⊂
⊂¬DESCEND(1+ N))))) 
α
(@	
U≤@K≠1!≡A≥%_@~∀@@@@@vvA5←mJA1KEhAACeK\↓←kh\4∀@@@@@@QA%∨∞@!)≠ ↓_	%hP%↓↓α↓↓"≡∩↓"ε: ∧αE≤XJ∩∧r¬λ4$
$∧R`4pr⊂)→J*(¬πβ⊂'U∀TP
)"`∀URN NIL))
	     (%ASCEND	
∩@@@@QM ∩E¬"⊗ -∧¬α,≤~)bα*t84*α∧∧+$	J**!Q@∧P⊂λ⊂⊂∀∩Q"f"j⊃P⊂⊂VH'∀TFB∧P⊂⊂λ⊂∀∩b⊃iabg⊃⊂∀⊂VH'∀TFB∧P⊂⊂λ⊂∀!"U*i'
⊂¬BINSERT (NCONS TEMP) 18RRRR~∀4SYm+C∞;∀4(1mm[Ymmm[Ymmm[Ymmm[Ymmm←≠↔πK≡C';≥ε3W;∂&K?;M[Ymmm[Ymmm[Ymmm[Yl4)[Ym↓↔6K;⊃hhQmmmαβCπQβQβCπ'#↔K9π#=βO.K∂!ε3?I9h)mmZ↓β∪'∩↓u↓5
↓↓↓iπ≠↔πK≡Aβπ≡[←πK'→84)[Ye↓↓α↓↓↓uαYE↓↓βQβO↔∂∪∂!β6{K←π⊗#M84SYmmβn{∪∃↓j↓↓βQα↓iβ∂F+∂-βNk7↔∪NS∃β≡{;Mβ6KKOPhQmmlJ↓u↓β&{A↓iε≠#↔∂Zβ?;3Jβ'77,#'πS*βO?;_h)mmZ↓↓↓↓α↓u↓-fqy↓iε3';⊃π##∃βw#!β?≡≠WKπv≠∃β?2βCπS&+K84Ph)"∩,2V9↓,2&:⊃αBBεQ∧"&Iαlz∩∃%h)↓↓α↓↓↓↓E~⊗REα*2εN"j~&:"jBεR$*J9α∧
Q$4R↓↓↓↓α↓↓"∞|r⊃↓!D*Eα6|"∃↓≡$zA%!-">B∞D*ε-α∧
Qα∩M⊃%$4R↓↓↓↓α↓↓↓↓α↓↓↓!D*Eα6|"∃αQJ↓">IαA⊗R>∧~"ε∞ZαBεQ∧"&I%αA⊗~&t!EαB
!α∩&∩I%$4PI↓↓↓α↓!!⊗∧zMα6|"∃$4PI↓↓↓α↓↓"∩zα:&0hP$%↓αA!uαlz∩¬↓αq%αQHh($%α↓">IαA⊗~&t!EαB
!α∩&∩I↓"J-"VJ9∧r&1∃⊃PPH∀∧αE≤ZJ∩∧lxHRαC∃P∧l|HU∩JJ∃∃∩h!Q#K[4∧V6Nl@$∞y8<L=→<hMβy⊂'→|:⊂'Xqzy0[1rP7Yα <`at: startine from %/#ce¬
;8εv@@↓SLAHβi-E↓∧εFF.d∞6.∂,=απ&tλM≤z≥β!'nn`∧∧λλλG+, ∞M→;@⊂≤ppy1Z⊂:7P≠2s:εB≥]]@→αirsT searches the Ce, then e@YKesi!S]NAQ↑ASiLAeSO!h\
∀lrv@@↓R]J\↓cCCe
QKfA%\Aae%]hA←IIKd\4∀~∀Q⊃
+≤K
∪≥⊂b@A↓¬(AλR~∀@@@@@@!	βπ→¬%α@Q→∪1
,iα⊃%Hh)↓↓α↓↓↓↓DzI↓!,~",95T,DYXTu%4
∧
 Q!⊂HJ∧∧ααD9yd"α¬
∧e-:∧∧"Jε⊂E∀λ
	)H3Qu	∧	+hh8***!Q@∧DDH⊂⊂⊂"
FE∧Pλ⊂∀∩aR ¬CK
UPWARDS PAT D))) 

λ(DEFUJ %CH@π⊗51!∀*NN→ybαEλ~B∧"∀↓PRα∧∧αααπ32ε≡X6Jε←∞π⊗/>8
-⎇H_;LD~=≤d;→3,]]≤kAQHλλ∧∧λλ
λHαaf T P∀#∩l# ∃M D!)
λ       (OR  %MATCH↓!β(@∀X
∞∞*H4(∀∧ααBX9∧,≤αk1)H313JJh⊂⊂*A"B"!∀λλλ¬λqsQ∧¬
⊂λ&∃ih⊂"
P_W) ( ⊂K1⊂~≡$A↓∃=≤~∃%%Hh $$J↓↓↓α I%%hP4)"$*~V9α*ε"⊗≤Y6⊗2,j⊗ 5J4αE∧~@∧J∧E∀hR∧∧ααα∧π3@4_z→,=h→0⊗→vrw:≤β of expreqsioN,	α       (@	π1β%
@!
∪!≥U~A%∧!%$∀R↓↓↓↓α↓↓"∩zα0∀LAQ Jα∧¬αDtz@αB1⊃4h83Q	∃*(∪I→λ∧FEαP⊂⊂∀⊂e`∞D((%CHEC@⊗[∃1!%M'∪∨≤↓!β(A⊂R@A∀*RVJp∧¬"J⊃Q HJ¬↓α,
88Tdλ(

85∀(	∀λ∧∃@ I D)))))) 
~∀!	β
8@@⊗∞D*≤ZX¬4
@`i")H∀( jλ"⊂	 
λ       ;lAGYS5DAk`↓iQJAQaKJAMKCeG!S]NAα3?Iβ∧Q8Q$ααα∧∧ααDHX4d
(TαDR6∪JYαP"∪α))
       (@ROG (N) 
	     (SEDQ N (CDAR %,εGπ⊃¬∪≤RR4∀∩@@@@Q¬∃)+%≤Qβ≥λP@⊗ε≤~⊗ 4E⊃P@H⊃∀ααDz$αB0r⊃(eVbf⊃d¬ENTS PAT (# Nhe ce for pattern.
;;;   d = +1 : forward search 
;;;   d = -1 : backward search 

(DEFUN %TOPCHECK (PAT D) 
       (DECLARE (FIXNUM D START STOP))
       (PROG (START STOP) 
	     (COND ((> D 0.) (SETQ START 1. STOP (1+ (%LENGTH %/#CE))))
		   ((SETQ START (%LENGTH %/#CE) STOP 0.)))
	     (RETURN (DO ((J START (+ J D)))
			 ((= J STOP) NIL)
			 (AND (%MATCH PAT (%CARN %/#CE J))
			      (%DESCEND J)
			      (RETURN T)))))) 

;;*page 
;;;;;;;;;; the matching function ;;;;;;;;;; 
;;;
;;; (arg 1) - p -     pattern
;;; (arg 2) - d -     data
;;; (arg 3) - alist - optional list of variables (* or ?) whose values
;;; 		      are to be retained during the match, much like the
;;;		      = variables below.
;;; elements of a pattern:
;;;	? 	- matches anything
;;;	* 	- matches one or more expressions
;;;	?<atom> - like "?", but sets ?<atom> to thing matched
;;;	*<atom>	- like "*", but sets *<atom> to list of things matched
;;;	=<atom>	- matched against value of <atom>
;;;	(restrict <one of above ?-variables> <pred1> <pred2> .....)
;;;		- the predi must eval to non-nil
;;;
;;; (%match p d <variables to retain>) attempts to match p against d
;;; (%continue-match p d <variables to retain>) attempts to get the next
;;;		  possible match between p and d (by different *-variable
;;;		  bindings.


;;; *page
;;; The Matcher & friends normally appear in this slot.
;;; However, they are now in MATCH.nnn[AID,RPG] so that they
;;; can be loaded separately. Note the AUTOLOADs below
;;;
[IFN SAIL
	(DEFPROP %MATCH (MATCH FAS DSK (MAC LSP)) AUTOLOAD)
;	(DEFPROP %CHAR1 (MATCH FAS DSK (MAC LSP)) AUTOLOAD)
	(DEFPROP %CONTINUE-MATCH (MATCH FAS DSK (MAC LSP)) AUTOLOAD)
	(DEFPROP %%MATCH (MATCH FAS DSK (MAC LSP)) AUTOLOAD)]
[IFN IPS 
	(DEFPROP %MATCH (RPGMATAH FASL DSK JONL) AUTOLOAD)
;	(DEFPROP %CHAR1 (BPGMATCH FASL DSK JONL) AUTOLOAD)
	(DEFPROP %CONTINUE-MATCH (RPGMATCH FASL DSK JONL) AUTOLOAD)
	(DEFPROP %%MATCH (RPGMATCH FASL DSK JONL) AUTOLOAD)]
[IFN ((NOT SAIL) DEC10)
	(DEFPROP %MATCH (MATCH FAS SYS (1 2)) AUTOLOAD)
;	(DEFPROP %CHAR1 (MATCH FAS SYS (1 2)) AUTOLOAD)
	(DEFPROP %CONTINUE-MATCH (MATCH FAS SYS (1 2)) AUTOLOAD)
	(DEFPROP %%MATCH (MATCH FAS SYS (1 2)) AUTOLOAD)]
;;*page
;;;;;;;;;; marking functions ;;;;;;;;;; 

(DEFUN %MARK NIL 
       ;; set the mark to the ce.
       (SETQ %MARKCHAIN (NREVERSE (MAPCAR (FUNCTION CDR) %/#CHAIN)) 
	     %MARKCHAINLENGTH (LENGTH %MARKCHAIN))) 

(DEFUN %JUMP NIL 
       ;; jump to the last place the mark was set.
       (PROG (CE CHAIN) 
	     (SETQ CE %/#CE CHAIN %/#CHAIN)
	     (RETURN
	      (COND (%MARKCHAIN (SETQ %/#CE %TOP-EDIT-EXP %/#CHAIN NIL)
				(DO ((MCH %MARKCHAIN (CDR MCH)))
				    ((NULL MCH) T)
				    (COND ((%DESCEND (CAR MCH)))
					  (T (SETQ %/#CHAIN CHAIN 
						   %/#CE CE)
					     (BEEP)
					     (!P '|can't fiNd mark|)
					     (REDURN NIL)))))
		    (T (%P '|mark has not been set|) (BEEP) NIL!)))) 

(DEFUN %REMARK (POS N) 
       ;; update the mark.  called by %ainsert and %delete.
       (PROG (MCH) 
	     (AND %MARKCHAIN
		  (NOT (> (LENGTH %/#CHAIN) %MARKCHAINLENGTH))
		  (SETQ MCH
			(DO ((CH (NREVERSE (MAPCAR (FUNCTION CDR)
						   %/#CHAIN))
				 (CDR CH))
			     (MCH %MARKCHAIN (CDR MCH)))
			    ((NULL (CDR CH)) MCH)
			    (OR (= (CAR CH) (CAR MCH)) (RETURN NIL!)))
		  (COND ((> POS (CAR MCH)) N)
			((= POS (CAR MCH))
			 (AND (< N 0.) (SETQ %MARKCHAIN NIL!))
			((RPLACA MCH (+ (CAR MCH) N)))))
	     (RETURN T))) 

;;*page 
;;;;;; utility functions ;;;;;;;;;; 
[IFN SAIL
(MACRODEF NEXT-SYM () (IMPLODE (CONS '? (EXPLODEC (SETQ %%NEXT-SYM%% 
						   (1+ %%NEXT-SYM%%))))))

(MACRODEF NEXT-SYM*()(IMPLODE (CONS '* (EXPLODEC %%NEXT-SYM%%))))

(DEFUN %STRUCTURE-LS (EXP N) 
       ;;; %structure returns exp with all parts with depth > n
       ;;; replaced by "/#".
       (DECLARE (FIXNUM N))
       (COND ((ATOM EXP) EXP)
	     ((ZEROP N) ((LAMBDA(Q)
			 (SET (INTERN (NEXT-SYM*)) EXP)
			 (PROG2 (SET Q EXP) Q))
			 (INTERN (NEXT-SYM)))) 
	     (T (CONS (%STRUCTURE-LS (CAR EXP) (1- N))
		      (%STRUCTURE-LS (CDR EXP) N)))))]

(DEFUN %STRUCTURE (EXP N) 
       ;;; %structure returns exp with all parts with depth > n
       ;;; replaced by "⊗".
       (DECLARE (FIXNUM N))
       (COND ((ATOM EXP) EXP)
	     ((ZEROP N) '⊗)
	     ((HUNKP EXP)
	      ((LAMBDA (H J N-1)
		       (SETQ H (MAKHUNK J))
		       (DO ((I 0 (1+ I)))
			   ((= I J) H)
			   (RPLACX I H (%STRUCTURE (CXR I EXP) N-1)))) 
	       ()(HUNKSIZE EXP)(1- N)))
	     (T (CONS (%STRUCTURE (CAR EXP) (1- N))
		      (%STRUCTURE (CDR EXP) N)))))

(DEFUN %SPRINT (EXP) 
       ((LAMBDA (REMSEMI SPOINTER)
	(COND (SPOINTER)
	      (T ((LAMBDA (C) 
		  (FASLOAD GRINDEF FAS DSK (MAC LSP))
		  (SETQ SPOINTER (GET 'SPRINTER 'SUBR))
		  (APPLY 'CRUNIT C))
		  (CRUNIT))))
	(SUBRCALL NIL SPOINTER EXP) (TYO 32.)) %COMMENTS? (GET 'SPRINTER 'SUBR))) 

(DEFUN %LENGTH (L) 
       ;; (%length <atom>) ==> 0.
       (DECLARE (FIXNUM I))
       (COND ((ATOM L) 0.) (T (DO ((I 0 (1+ I))
				   (L L (CDR L)))
				  ((ATOM L) I)))))

(DEFUN %CARN (L N) 
       ;; returns nth element of the list L.
       (DECLARE (FIXNUM N))
       (DO ((I N (1- I))) ((< I 2.) (CAR L)) (SETQ L (CDR L)))) 

(DEFUN %CDRN (L N) 
       ;; returns the nth cdr oF the list L.
       (DECLARE (FIXNUM N))
       (DO ((I N (1- I))) ((= 0. I) L) (SETQ L (CDR L)))) 

(DEFUN %POS (N) (AND (NUMBERP N) (< 0. N))) 

(DEFUN %NEG (N) (AND (NUMBERP N) (< N 0.))) 

(DEFUN %P N 
       ;; a printing function.
       (TERPRI)
       (DO ((X 1. (1+ X)))
	   ((> X N) T)
	   (MAPC (FUNCTION (LAMBDA (LIST) (PRINC LIST) (TYO 32.)))
		 (COND ((ATOM (ARG X)) (NCONS (ARG X))) ((ARG X)))))) 

;;*page 
;;;;;;;;;; functions for reading & writing on dsK ;;;;;;;;;;;;;;;
;;;

(DEFUN %READF (F-NAME FILE) 
       ;; gets the definition of the function F-NAME out of the 
       ;; FILE.  returns nil iff the file is not found, or the function 
       ;; is not in the file.
       (PROG (S READTABLE EOF) 
	     (SETQ READTABLE (COND (%COMMENTS? GRINDREADTABLE)
				   (T (GET 'READTABLE
					   'ARRAY))) 
		   EOF (LIST NIL))
	     (SETQ FILE (%EXPAND-FILE-NAME FILE))
	     (COND ((APPLY 'UPROBE FILE)
		    (APPLY (COND ((STATUS FEATURE SAIL)'EREAD)
				 (T 'UREAD)) FILE))
		   (T (%P '|file not found: | FILE)
		      (RETURN NIL!))
	     (SETQ ↑Q T)
	LOOP (COND ((EQ EOF (SETQ S (READ EOF)))
		    (COND ((STATUS FEATURE CAIL! (BEEP)))
		    (!P '|the function:|
			F-NAME
			'|was not in the file:|
			FILE)
		    (RETURN NIL))
		   ((%MATCH F-NAME (%GETNAME S))
		    (SETQ ↑Q NIL)
		    (PUTPROP F-NAME FILE '%SOURCEFILE)
		    (RETURN S)))
	     (GO LOOP))) 

(macrodef push-f (x) (setq pdl (cons x pdl)))
(macrodef pop-f () (setq specs (cdr specs)))
(macrodef check () (cond ((null specs)(*throw 'out (nreverse pdl)))))
(macrodef default (file)
(cond (file
 (*catch 'out
	 (prog (pdl)
	 (push-f (car file))
	 (pop-f)
	 (push-f (cond ((or (null file)
			  (memq (car file) '(dsk sys))
		   	  (not (atom (car file)))) '/ )
		     (t (prog2 nil (car file) (pop-f)))))
	 (check)
	 (push-f (cond ((atom (car file)) (prog2 nil (car file)(pop-f)))
		     (t 'dsk)))
	 (check)
	 (push-f (cond ((= (length (car file)) 2)(car file))
		     (t (list (caar file)(cadr (status udir))))))
	 (*throw 'out (nreverse pdl)))
	 ))))

(DEFUN %EXPAND-FILE-NAME (SPECS) 
       ;; specs = (filename ext) or ((filename ext)).  Extension
       ;; defaults to LSP.
       (AND (NULL (CDR SPECS))
	    (NOT (ATOM (CAR SPECS)))
	    (SETQ SPECS (CAR SPECS)))
       ;; default extension?
 (COND ((STATUS FEATURE SAIL)(SETQ SPECS (DEFAULT SPECS)))
       (T 
       (OR (CDR SPECS)
	   (SETQ SPECS (LIST (CAR SPECS)
			     (IMPCOND (SAIL '/ )
				      (DEC10 'LSP)
				      (ITS '>)))))))  
       ;; default device and PPN?
       (OR (CDDR SPECS) (SETQ SPECS (APPEND SPECS (CRUNIT))))
       (OR (CDDDR SPECS) (SETQ SPECS (APPEND SPECS (CDR (CRUNIT)))))
       (AND (STATUS FEATURES SAIL)
       	    (COND ((EQ (CADR SPECS) '/>)
                   (RPLACA (CDR SPECS) 
			   (APPLY 'UGREAT
			          (LIST (CAR SPECS)
					(CAR (CADDDR SPECS))
					(CADR (CADDDR SPECS))))))))   
       SPECS))) 

[IFN SAIL
	[IFN NEWIO
↓     (DEFPROP UGREAT (DIRECT FAS DSK (MAC LSP)) AUTOLOAD)]
	[IFE NEW@∪≡4∀∩@@@@Q	∃
!%∨@A+∂%∃β(@Q⊃∪%πPA¬β&↓	'⊗@!∨→λA1' BR↓β+)∨1≠βλSu:~∧~(Q∩⊗5*9↓⊗=∩&@$XdαD
∧∧4LHU∩hαHλ∧∧λλλπ↔h≤t∞-;]≤d∞~→(@4πrmEXP Into A filE FILE.λ
∧@@@@@Q!%∨≤A≥∪_~∀%α↓↓↓↓E~⊗@%∀λdL@⊃(
∧X6⊂⊂)Hλεc$S"Vg SbP#$S"TTnCE_	     [IFE NEP∂&z4)@1⊃∩ααλ8U%
λi∀d(
∩Ql( g⊃⊗c$f⊃T¬NAME FILE))]
λ;	     @7%
≤A≥∃(∞&=h!l$J↓↓"N-"Eα~Lb∃↓λ9t`*h
⊂h_∀H⊃I→α"TP
!`∂NS
0⊗∩$∩∩α∩!∞ε∩%⊃α~&d)%↓λ8∃∩∧i→D*J∃∃∃hhαB(∧∧λλ
λ→pπ" ((APPLY 'UPROBE FILE)
α		    (APPLY  ∂+βA!β≥λαα~&2*I$4λHI↓↓↓E!↓"ε¬α2e↓=*↑J&$)↓"∞$"Iα~Lb∃%%JH4(¬α↓↓↓↓D~6*⊃αA"εB∧be↓≡-αJ>
*α~&2*H4(∧J↓↓↓↓D
BBK∀α=~
∧,TDλdL@⊃**!Q@"(∧∧
⊃¬λ4⊂∪∀	u5j)5⊃(¬λq⊃∀DλR3⊃%∃**7!Q@∧P⊂λ⊂⊂≥MH3rz⊂≥42P3\4s22\∧E∧Pλ⊂⊂⊂∀	cbb#T$g"∧CE	     (¬iog% UR (¬SPRINT EHP))¬
	     (RE@)U%≤@Q¬!!2J↓≥⊗V4J2∀Q!⊂HJ∧∧ααDβ∩4jD
⊂p*$⊃R3λU(
⊂h_∀H⊃I→α"TTJTTTPβE


α(DEC@→βI
@AπAπ&a↓*~Lb∃↓([¬"α*∧αU∧e∀αBTH[¬¬∩∧YT
$9¬∩Hh!Q hRλHT5,d∧U∀,_@(i3⊃+)h31(¬	10th_q*(↓QHλλ∧∧λλ

H4T∀I∃!"H∧∧λλλ∧¬⊂3Q∧	14th_q(


R3Pd	10th_q*(¬
⊗3hε6KJ*!QHλλ∧∧λλ
¬	⊂30HH(
∀k→L(∀k→LH∀k→Lh∀k→Mλ∪(_l(∪(_lH∪(_lh∪(_m
(↓Q@∧P∀∀bj)lS* l⊂
~↔⊂→λ~~↔∧CE	 (SETSYNTAX46. 2 46.)
∩@!')'e≥)β0rb\@H@rb\$~∀%αBN⊗R≥J:RεB↓eM9β⊃↓eMrH4(∀¬αDd→X$$
¬ααTi→D*α) (↑G))
	    (T
	     ((LAMBDA (Q) 
		      (COND ((%MATCH '(*FILE |.| *EXT /[ *P /, *PN ] 
*)				     Q)
			     (LIST (LIST 'DSK
					 (LIST (IMPLODA *P)
					       (IMPLODE *PN)))
				   (IMPLODA *FIHE)
				   (IMPLODE "EXT)))
			    ((%MATCH '(*FILE |.| *EXT /[ *P /, *)
				     Q)
			     (LIST (LIST 'DSK
					 (LIST (IMPLODE *P)
					       (CADR (STATUS UDIR))))
				   (IMPLODE *FILE)
				   (IMPLODE *EXT)))
			    ((%MATAH '(*FILE |.| *EXT /[ *P) Q)
			     (LIST (LIST 'DSK
↓				 (LIST (IMPLODA *P)
					       (CADR (SDATUS UDIR))))
				   (IMPLODE *FILE)
				   (IMPLODE *EXT)))
			    ((%MATCH '(*FILE |.| *EXT /[) Q)
			     (LIST (LIST 'DSK (STATUS UDIR))
				   (IMPLODE *FILE)
				   (IMPLODE *EXT)))
			    ((%MATCH '(*FILE |.| *EXT) Q	
			     (LIST (LIST 'DSK (STATUS UDIR))
				   (IMPLODE *FILE)
				   (IMPLODA *EXT)))
			    ((%MATAH '(*FILE) Q) X)
			    (T (%READ-FILE-NAME '|Guess again!!!|))))
	      ((LAMBDA (L) 
		       ((LAMBDA (AA BB) 
				(DO FIL
				    ((NOT BB))
				    (SETQ AA (CDR AA) BB (CDR BB)))
				(RPLACD AA NIL)
				L)
↓		L
			(CDDR L)))
	       (CDR (EXPLODE X)))))))
	  (UNWIND-PROTECT (READ)
↓		  (SETSYNTAX 4∀, SYN1 44.)
			  (SETSYNTAX 46. SYN2 4⊗.)¬
			  (SETSYNTAX 91. SYN3 91.)
			  (SETSYNTAX 93. SYN4 93.)
			  (AND MAC1 (SSTATUS MACRO 44.(CAR MAC1	))
			  (AND MAC2 (SSTATUS MACRO 46. (CAR MAC2)))
↓		  (AND MAC3 (CSTATUS MACRO 91. (CAR MAC3)))
			  (AND MAC4 (SSTATUS MACRO 93. (CAR MAC4))))
	  NIL
	  NIL
	  NIL
	  NIL))
	(STATUS SINTAX 44.)
	(S@)¬)+&AM3≥)β`@hl\$~∀∩QM)β)+LA'3≥Qβ0@rD\R~∀$Q')βQ+&A'e≥)β0rf\R4∀∩Q'Qβ)+&↓≠βπ¬<@hh\$~∀∩QM)β)+LA≠βπI≡@hl8R~∀∩!')β)U&A≠β
%≡@rD\R~∀$Q')βQ+&A≠¬π%≡@df\RR$~∀
∀~∀vQ⊃
+≤K%β⊂[
∪→∀[≥β≠∀A≥∪_~∀v@@@@@Q	≡@ Q∩@QQ3∪!∃⊗R@QQ3∪!∃⊗RRR4∀v∩@@PQβ9λ@Q≥=(@Pz↓∩@bd$R@Q≥=(@Pz↓∩@bj$RRR~(v∩@@Q)3∩$R~∀v@@@@@Qπ∨9λ@PQ9∨ @Pt@Q)3%!⊗$@j`R$@PK!¬%'
[→∪→≥¬≠
RRQ(@QIβλR$RR~∀4∀~∀v!	
+8@K!βI'
[
%→≥β5
A≥∪0@~∀v@@@@@PQ→¬≠¬	αQ!$↓π∨~A1∧A%∧$@~∀v$∩Q'Q'3≥)¬0@N↑8~∀v∩$∩@@@≥'!→∪
∪≥∞~(v∩∩∩@@NQ1β≠¬	∧A≥∪_Q≥π∨9&@QβMπ∪∩@Ld\RR$R~∀v$∩Q'Q'3≥)¬0@N←l~∀v∩$∩@@@≥'!→∪
∪≥∞~(v∩∩∩@@NQ1β≠¬	∧A≥∪_Q≥π∨9&@QβMπ∪∩@Ld\RR$R~∀v$∩Q'Q'3≥)¬0@N↑0~∀v∩$∩@@@≥'!→∪
∪≥∞~(v∩∩∩@@NQ1β≠¬	∧A≥∪_Q≥π∨9&@QβMπ∪∩@Ld\RR$R~∀v$∩Q'Q'3≥)¬0@N←t~∀v∩$∩@@@≥'!→∪
∪≥∞~(v∩∩∩@@NQ1β≠¬	∧A≥∪_Q≥π∨9&@QβMπ∪∩@Ld\RR$R~∀v$∩Q!%=∞dA≥%_~∀v$∩PQ→¬≠¬	α!αRQπ=≥λ@P!≥∨(@ z@@QQ3∪!∃⊗R@bTRR~∀l∩∩@@$∩@@Q¬!!≥⊂Aα@Q1∪'(@≥	'⊗@!→∪'(Q%β⊂RQ%¬λRRR$R~∀v$∩∩∩@!(AαR$R~∀v$∩@Q→%'(@QIβλR!%βλ$RR~∀l∩∩@@@@@@!')'e≥)β0N↑\AA$A≥%_R~∀l∩∩@@@@@@!')'e≥)β0N↑XA
∨~A≥%_R~∀l∩∩@@@@@@!')'e≥)β0N←6A1∧A≥∪0R~∀v$∩@@@@@@QM)'39)β0@≤←:A%λA≥∪_$RR~∀l∩Q')¬)+&AM3≥)β`@hl\$~∀v∩!')β)U&A'39)β0@Ph\R~(v∩Q'Qβ)+&↓'3≥)¬0@rb8R~∀v$Q')βQ+&A'e≥)β0rf\R$R@~∀_Q	
→β%
Q'!
∪β_AQ≡[%→∪→
AI
∪→∀[β→_↓+!	βQλRR~∀~∀!	
+8@K%→∪⊃
@!)≡[%∃
∪→
K∪≥
%→
A∨U)
∪→∀R@~∀@@@@@vvAUaICi∃fAMk9GiS←8AIKM%]SiS=]fAS8ABAM%YJ\@↓i↑[e∃MSYJ↓SfAB4∀@@@@@@vlAMk]
iS←\↓]C[J↓←dAB↓YSgh↓←LAMU]GiS=\A]C5Kf\@DTDA¬GifA¬fABA]SYIG¬eH~∀@@@@@vvA]QSGP↓[CiG!KfAC9rAMk9GiS←8\@A∪_AShAαK@~ε≥l6g9→9¬D≥~→-d→[p→λ2pqtβE⊂⊂⊂λ⊂⊂⊂≥NP3:w_z4wwλ22s )nitiOn inthe file, wa lOok fOp a @⊃aCMhαβ∂?CJp4)↓α↓↓↓↓βYmα'2β≠ ?]lBbπMVrπ|Tπ⊗/
Hλ,<(≥~T≠{→∧{|≡$∞z=~∧∞~→(NX9U¬@εA⊂⊂λ⊂⊂⊂⊂∞]P4cλ0P3*[1z4g[⊂4yP→|864Xtz6<H70vrY⊗⊂:4→w⊂;rH67wuH37y a draft copy¬
       ;; and, @%H	β;}s∃β'~β≠/Wv!1β←*β3 >⎇4ε&␈$⊗rε←V∨/L≤&f*8n∂+C"D∧λλλ∧∧∞nh≥↑(→N]X⎇~-⎇H→→,m9Z0~~ww9P≠7z⊂#≠zw2 in the fi@1JACe∀@~∧@@@@@vvACAaKMI∃HAi↑↓iQJA	←ii←4A←LAQQJAMαK3∃8hQ↓↓↓α↓↓↓mZβ'	β⎇+S≠'d∧RεO4
fNbDλ
.D→→9L≡9≥≤d∞≠h	)→β#$f⊃U
       ;; Id∧@K∪9
∪→
↓SfA]=hAgaα+∂'≠L∧V"b∞|Rε∂NLVoπDλ

t→Z0↔→⊂0P∩\wzy1Ys0	l@∀Aae←AKeiR↓IP∨I∧¬vv*
x	D∞~→(N9Xp~~ww9FB⊂⊂⊂⊂λ⊂⊂∀(∀'cP∀∀ c$f⊃T¬ALL UPDATAD S NEW↓∂
→β≤R~∧∩@@@@lp
β↔w≠WK∃∧εFF∂Dλ

u<Y0∪~v2P$\β a @1Sgh\4⊂∩@@@@Aβ9λ@QβQ_∞ *λ¬∪eZQ1R)H*(

85∀ 
Ii4Q(i3⊃(¬	PssJ4∃∪k*(1R3λU**#!∧P⊂⊂λ⊂≥UP≠4πok↓H/I∧∧∩α↔⎇→F&≡≤∧Y∧↓ ¬∧Pλ⊂⊂⊂∀⊂e"⊂∀∪bfh@	U⊂ ∀O-REFILE)
		  (SETQ↓%⊗~Lb∃ ,→IB¬"⊃Q HJ∧¬¬≤-J⊂λ
Ii4Q(i3⊃(¬λα"f(H∪P
 TO(%→∪⊂∩∃JI$4λJ↓↓↓↓βYeβ∪,εF/⊗]→f*πMRεNn∞W"εm_UA"B$∧λλλ¬
q5∀$λqS⊂(tλ⊃4$¬⊂p1
$	23Hi3⊃*$∧koJ%∀β"B$∧λλλ¬λssQ∧¬	23Hi3⊃(¬
q5∀$∧23QI→⊃(
∧X6∀⊂)h1R)H+3P)X(	2)hR3⊃%∃*#"A⊃(λ묬	1q*E4su*(q+1I→⊃(∃	uαi"c∩d"TTCE∧DPλ⊂∀"
⊂¬P '|pleasa specify a fIle.|)
↓	      (RE@)U%≤A≥%_RRR4∀∩@@@@vv↓IKiKI[S@;*βS#∃ε{WSC-!β≠πd)0$λJ↓↓↓↓αBN⊗Rλα0≥-Hi∀d(β"B!∀λλ
λ9pπ"⊂
'jb#∩d∧E ((LAMBDA (FIHE)
				  (CON@λ@P!"@Q
β	$A=+)
∪1
R@N<|R
∀$∩∩α@∩@Q∃α2ε∞
↓"∞∩⊂α~&2*I4λHH$$$J↓"&6∧b>∩∃h($$HH%%α↓"εb∧b>∩∃h($$HH$%↓α↓!E-αBJ⊗ε$b&NQαB:∞>u→4(HH$$$HH%↓↓D~ε∩I∧2&"∃JI%%%JI$4(HH$$%αBQα~Lb∃%%Hh)↓↓α↓↓↓↓α↓↓$HI↓↓↓B*⊗bBr⊃6~Lb∃6:j∃α>-"~&2*I%$4PH$%↓E!↓"∞|r⊃↓"<22ε≥αB∞>:~↓"∞ε∩↓⊗&:4J2∃$hP$$$HI↓↓↓α↓↓↓"≤z:M↓DJ6B2|"∀4(HH$$$J↓↓↓↓α↓"εb∧b>∩∀hP$$$HH%↓↓α↓↓↓↓C	-↓"α(T$I~5"α	h4|u4↓PPH⊃⊃⊂HH⊃∀ααα∧∧αD≤_J"α,→hdLdU∃∩JJ∃⊃PPH⊃⊃⊂HJ∧∧αααλ8D%∩∧Y∀t4→HRJJ∃⊃PPH⊃⊃∩αED∧TLTi→D*J∃∃∩Hh!∀ααα∧π3Zε|↑Bπ&Tε?⊗≥lF/∩
≤bεOD
↔≡r}@ε∞g,\⊗'J
W⊗(Q!∩αα∧∧αB9y=}Z;Y¬⊃"B(∧∧λλ∞g4≠|→-d≥~→$Z;→$[|H
}=≤≥.EC"B$∧λλλ¬
q5∀$TH∃¬⊃"B(∧∧λλ∞g4~→<LT≥y(⎇h#"K91SH	h5r3aQB(λ∧∧λ
⊂iyQλ
¬
∀SpHXH
∪H→13∩*:λ	2)hR3⊃%∃#"B!∀λλλ¬∧00u	~P5⊃%XtR3HE300j)th∃¬⊃"B"$∧λλ
λ~∀∪⊗$∧qtR)hλ	)→QR3λU#"B!∀λλλ¬∧00u	~P5⊃%XtR3HE300j)th∪I→λ*#!!"(λ∧¬≥λ
λ~∀∪⊗$∧u1tI~⊃(
λ8⊃∀H	z5⊃R)H***%∀λλβ!+#"Vi_Q(∪HZp3c!!(λλ∧∧
⊂sihλ

λ~∀∪⊗$∧u0∀IxQ(	)→QR3λU#"B!∀λλλ¬∧00u	~P5⊃%XtR3HE300j)th∃¬⊃"B"$∧λλ
λ~∀∪⊗$∧qtR)hλ	)→QR3λU#"B!∀λλλ¬∧00u	~P5⊃%XtR3HE300j)th∪I→λ*#!!"(λ∧¬≥λ
λ~∀∪⊗$∧u1tI~⊃(
λ8⊃∀H	z5⊃R)H***%∀λλβ!+#"B$∧λλλπ7h_9D≠Y=d];XnM;{\ea"Vr(iH∪Q*y3c"D∧λλλ¬λssQ∧¬
∪1)Z(∃5j)5⊃(	z5⊃R)H4j*!QB(λ∧¬∃λ


4rλ
ZtR5λT∪u5λi3⊃4e∃*7#!!(λλ∧∧
	:-|i#"A∀λλλ∧∧∃tC!!(λλ∧∧λ
∪(~⊂h
λj3Pu	→sH
	H30Qλ∀
⊃J$↓"B"!⊃(λλ∧∧λ
⊂iyQλ
¬
q5∀$
h
	(x5⊃⊃(d⊃J*!QB""!⊃(λλ∧∧
∀∃*9λ⊃H	h5j#!!"""!∀λλλ∧¬∀q5
∀∃∪k*(1R3λQ"B"!⊃""(∧∧
⊃⊃)J(⊃H
Ik4Q(i3⊃*%⊃"B"!⊃"(λ∧∧λ
	*:∀R3JD∀j*%∃*#"A⊃(λλ∧
∪k4HXR3⊃%∃#"B$∧λλλπ7h_{
}y(≥
(→Z-L+C"A∀λλλ∧¬⊂4∀	K(	i*XR3⊃$	u5⊃I→⊃*#!!(λλ∧∧∞nh∞L;≠λ∞M→(≥.<<H≥m=λ~≡≤→;L\C"A∀λλλ∧¬⊂3Q∧
4⊃⊂*H1β"A⊃(λ
∧];yi$
∃C"A⊃"(
∧Zλ	␈∞↑→_=\λ→]-l⎇~;mnh_<LW←β"A⊃"(λ∧∧λ∃4λH5⊃1¬∃*#"A∀λλλ∧¬⊂3Q∧	Q5c!!"(λ¬∧:;ydT∃∃H¬∧4λ	oMY=hn;X⎇
≥ '|unknown functions:| TO-REFILE)))
↓     ;≠ return the fiLe name.
	     (REDURN OUTFILE))) 

α(DEFUN %GETGRIND L¬∪_~(∩@@@@vvA5CWJAMkeJA≥%∪≥λ↓SfAS8\~∀∩@@@@!β≥λ@!∨$@Q≥(@O≥%∪≥	∃@O
M+¬$R4∀∩∩@PQ	β5¬	α@!εR~∀$∩@@@@A7∪→≤A'β%_@Q
¬'→∨β⊂A∂%∪9	αA
¬&A	',@Q≠βA→' $S:~∀$∩@@@@A7∪→≤A∪)L@Q
βM→∨βλ↓∂%∪≥⊃A
¬'_Aπ=~S:~(∩∩@@@@A7%
≤@P!≥∨(AMβ∪_R↓	⊗
↓%↓λh∃≤dx_B∧=)→d$
λh∃~¬8ε4d¬(D¬*7(↓Q@"(∧∧λλλ¬λ4∀∪∀	ptJYR5λλTTT!T*g$j
TTFEαDP⊂∀∪i⊂∀)U j*iH!"`j∃i"P#T$g"∀CEDPλ∀⊂λLAMBDA(C)
		      [IFN CAIH (FASDOAD GRIL@ FAS DSK (EAC LSP))]¬
		      [IFN ITS (FASLOADGRIND FASL COM%:~∀∩$@@@@A7β
8@PQ≥=(A'β%_RA	∃
EAJ↓"4~9D|Dλu∀Lh@∧4
4
5M~¬α∩β∩¬∃∃jQ!⊂Jα∧∧αααλ~¬∧e∀∧t≥∃Yi∃"∧5∃∩D≥*YdM"α**%∃(β"AQJ⊃⊃(j3H	(x54iz4Pq%XR3⊃$¬⊃U3H:⊂3sJ5(β"D∧λλλ∧∧∞nh∞<x;\d∞~→(
M<⎇
|H→U-l⎇~;mnh≠≠m⎇z;Yd[|@∀≤{⎇.,y9P∀[2WεEλ⊂⊂⊂⊂λ⊂∀"'H∀∀#∀JFE∧Pλ⊂∀∀'∃f"⊂#∃g!`∀IOH
&R↓≥∪_R4∀∩@@Qπ∂≥⊂@PQπ∃)"AQ≡⊗"↓"∞ε⊂∧∧5,h:DL\j5∩α:Z9u-∀8XdL@⊃**!QB"(∧¬∀Q5
ZSH⊃E∃#"B!∀
⊃λ¬
q5∀$λU3PjI3sTd¬⊂q∀DλU3PjI3sTe∃***%∀β"C!%⊃⊃0iH4Q(¬
3TtλXp03∧
∪k4HXR3⊃$
Q1R)H+03	D∃4⊃λ~⊃1
%∀β"C!%⊃⊃1JYH	0(:∩5P*H+1tI→Q3(_tStd¬⊗
(↓QHλλ∧∧λλ
λ9sQλ¬λ
⊂*
∪⊗(∧xtR3HI00tIq"B"$∧λλλ∧∧
∪∩*:λ
⊂*
⊃3Q∧∧11∩*HU3PjI3sTaQB""!∀λλλ∧∧j⊃⊃(j3H⊃λXT∀Sj¬*#"A⊃"(λ∧∧λ	i(X∩5(zR3Q¬Y00tIu**#!!(λλ∧∧
∃λ¬	04⊂d↓"B"$¬⊃U3H:∩3sD¬∪⊂3((⊂(
λe(β"A⊃""(∧∧
∀Q)Z∀St∧λH	qj)3Q∪(_tSj%∃#"B!∀
⊂4
λ3Qλ∧X1∩5λj3Pu	→sTh∧u⊃⊃1JYH⊃⊃(j∀St¬∃***%∀β"C!%⊃⊃0iH4Q(¬
t⊃0i_3λ∪∧
∪k4HXR3⊃$
Q1R)H+03	D∃4⊃λ~⊃1
%∀β"C!%⊃⊃1JYH	1(I51j)3Q)X0tSd	R3λ↓QHλλ∧∧λλ∞g4≠λ~.∀_(≤n8z8-D→|Z-lλ≥X.-88[T≥z~,=λ~<d∞y=λ∞Mh≥~T_⎇<N,;]β!$λλλ∧∧λ∞nd>≤≤L↑|z3md_Y2-lh→|M};Y↔λ⊂77z→]⊂;rH0v;p↑yP92]8¬rnnil.ASLA0ASf@4∀@@@@@@vlABAMU]GiS=\AIK→S]Si%←\AC9H@K∂∃)	↓MSMILAC\A∃ISiK⊂AmKeMS←\A=H	β'"a4)α↓↓↓↓α↓mmαbβ'Mβ≡+QβSzβS#∃εcπS↔∨!β[↔↔≠'?9ph)↓↓α↓↓↓↓EαJ>≥αB:ε6*αa%hP%↓↓α↓↓"N-"Eα:j∃↓↓,:⊗Rh→T*∧β
*!Q@(λ∧∧λ
⊂)hα⊂∀!SdεD ((MEMQ NAME TG-REFILE)
α			 (@'∃)"A⊂α↓!ε≡-"∩,d	dLU∃∩Hh!⊃⊂JE(XdL@⊃+0)Iλ
∀hZ∀(⊗∧¬	1q*H⊃1L$	P31%∃**#!↓ (λ¬
∃0	dλ' fbH*h" U b∀FB∧@	  (SEDQ L H↓)≡K¬∃
∪→
Q∩⊗d*R*	h∀l*λ¬∪eZQ1R)H***%∃(β"AQJ⊃⊃(d∧ARE (UNSP@π∪¬_A1¬"5 -(XdL@⊃(∀HXR3⊃%X3∪λ
Z⊃⊂5λXλ∧TPβE
;8εUaC≥J@~∀_Q	→+⊂→↓,22VND~0≤@313JJh
∪¬∀β"H∧∧λλλ∧¬⊂ssHDλ∧∀ S ∧ (BLπ ⊗:%↓↓?β∞`≥←∀PεEαDP⊂⊂
&bfhH∀!`iλ&⊂	 '(@	
U_	α∩,2& 4U∃∩Hh!∀ααα∧∧αD≤~ λ¬∧αc&*Td!gfSbg")LP )))  ⊃_$RR@~(~∀Q	∃
+≤@∃
→+≤B≤\β31)@*)P@ (L ∩@4⊂	↓↓α↓↓↓↓D~0≤@Qλ
¬λ5∪s$	λ∧P∀∪αC@∨≥LA_@%Hh %↓α↓↓↓¬	u∩αα⊃4$¬⊂p4D	λ∧P↔Nβ) (EQ  ⊃π¬$A1JβqmobI%αi→BHhαB(∧∧λλ
¬λαhP∀⊂βAR L) 'QULπ ∩∃JB0∀≤βsTd	λ∧TFB∧P⊂⊂λ⊂⊂λ@(α↓":∞|rM↓λ~¬∧e∀∧t`(pπg!CE			      (@≠βA∞εIαB~V:≥"& <βH	(i∃0	d⊂βK@≠≠∃_
RMλ¬⊂hPα""!∀λλλ∧∧⊂ε∀TJTTTPβE
(D@
,qα,I~D9βff`S ∧ FEXPR (X) 
       ;;defiNes atomic e`it↓G←[[¬]If\α↓β∃;8qa↓β,∧FO&=x-\8π2 ↑Z¬
       ;;(¬asce@9HRPK¬gGK]⊂RR4R↓↓↓↓α↓↓"BαZE¬∀z∧αD≤~ λ¬ εE∧BT!gg∀P∪h)∪cg⊂∀⊂b)⊂,
T@
		'ATOMIC-EDITCOMHβ≥⊂R~∧@@@@@Qπβ$↓0RR@4⊂∩∧Q⊃
+≤K⊃>!6⊗∩M!6&:M!6~&d)α:&b4)↓α↓↓↓↓αBBJ>8↓"
&d)α∞J,r&Q∀↓P@J∧∧αααλ8U%
∧Y∀dMI_∀dM(UT,$~Iu∪Z	i∀bHβ"B$∧λλλ¬	tH

85∀ ⊂⊃$f"P
 πETO	∪P@O	%([∪≥%([
∪1
RR~(∩∩@QI ∩Vα)b∧t→E∩Hh!∀ααα∧¬¬≤-J⊂∧:U3R*Dλ⊂tJYR5
%⊃"B(∧∧λλ
∧Zλ
→l↑λ	y,M=λ	l\~=β-≥X=⊗Y4v2V[5pr⊗[p¬ssadπJRR4⊂∩@@@@PQ1β⊂⊗
$	"J⊗"Rε
d)$4!∀ααα∧∧αB3∪p(E11∩*E23R*D⊃R3λTB%⊃"B(∧∧λλλ∧X1∩5
(01∃λ_S⊃*!Q@∧P⊂λ⊂⊂≥@; fdu@MPAiQ∃g@∃β/≠↔3↔∨→β≠Wv≠S'∨w→04!∀ααα∧4L4T
4LAQ Jα∧∧ααE(YU¬∀z∧α:,Ix∀"lXI∃"l→i∃"li→D*αz:T*J#"A∀λλλ∧¬∀Q3*
Stλ∧t3∪p(E11∩*E23R*D	tu()∀nFB∧P⊂⊂λ⊂≥UP≤2yz7\2P1`2unat↓IP∨I∧εFF*∞↑6/∩aQ Jα∧∧ααD~
∧eJ∧x5∃,i~B∧≥*YdM"α**$↓ C"Eλα"c*S⊂∩f'Pb⊗bb∩j⊂
INIT (FIHE /#P	∨'-∪ R@4∀@@@@@@vlAiQJZGi←MWS`A!CGVA∃]CEY∃`
α⊗$JQ:&tIβ≠'f+EβSzβ∂?;&'9↓⊗c';/~⊃βS=ε{S#↔∩α⊗∩&"r&:%∧3'3↔~p4)↓α↓↓↓↓αBBJ>:↓"⊗>2I4(J↓↓↓↓αB∞>:"↓!"ε¬α2e↓=*BJ>∀)α~&d)$4(HI↓↓↓αBεBBeIαn&4qαNεLa↓≡⊗∀*ε∩thP$$%α↓αn&4)αNεLa↓≡V∀*ε∩u∧2& $U∃⊂hP⊃∀ααα
DαE∀XJU∀r	i∀bJ∃⊃PPJ∧∧ααα
8U%
	j∩¬"λYt2α	I∃≥"	i∀bJ⊃Q Jα∧∧ααDItαBD[
ααE(X∀"∧YxbJαλ∧Q(_λ⊃3he*(
λ9u3U∧εH
ε∃h⊂sjYU
*%⊃"B"$¬
⊃4$λ6∀λλYqJ(
E#"B!∀
⊂sihλ

πD⊂su)jλhjItrr*¬*#"A⊃(λλ∧∧λλ
¬λ4(
λ84H⊃+

(	iI3Ru	u#"B!⊃*∪0*λhβ"A⊃ (
λj3Pu	→sH
	H30Qλ∀
⊃J$↓"B"!⊃"(λ∧¬	3∪h_11	~	23I~λ⊃Hε¬J**!QB""$¬⊂q∀Dλ6∀
%⊃"B"!∃∀Q5
ZSH
∧Y⊃p1¬X1∩5¬Y3R5∧λR3⊃$¬*hλ9u3U¬∃**#!!"(λ∧∧λλ묬⊃5P)D⊃6∀¬∃***%∀β"C!'nh~∀~_#! ↓E⊃⊃1JYH	1(I52λY∀λ∪I→λβ"D¬⊂ssHD

⊃hZλ	uiZRq4D∧tq0J%*#"D∧λλλ∧∧
∃λ↓QHλλ∧∧λλ⊗i_SH∀h→3λ
λh4s∪h_λ⊃∪h~∪tHλh4h⊃
9h
∪(_h∪∀j¬*7#!$λλλ∧∧λ⊗r(iH

	iuλ∀h→3
(λH0l,¬∀λ⊃P*9∪p1∧λ∪pu	zH⊃P*4∀r4d¬(E∃7#"D∧λλλ∧∧⊗r1Id∩5∀d∧
⊃P*9∪p1∧λ∪pu	zH⊃P*4∩SsIE7**!QHλλ∧∧λλ
∧Zβ"B$␈∪rkD
≠→8.<(→;NL<H≡-}<H≤.\<⎇~-⎇H→[mM≠⎇y,D_↑(∞N{h∂∞,=≥<MnoK←¬⊃"Hλ∧∧λλλ¬
q5∀$λ4TS	~uλ∪I→λ#"D∧λλλ∧∧
∃sj)q4J%∀β"C!%⊃⊃1JYH∀Q)X1∩5∧	R3λ↓QHλλ∧∧λλ∞g4≤Y;-}Y<h≡h≠8-o(≥≤L≤y<h
|H≥~T→9~.M|H_.4≤≠|n=8[→%Dβ"H∧∧λλλ∧¬∪04λ~∪s4d∧tQ3(X∩5∀
)t∀j!QHλλ∧∧λλ
	X4⊂p*$
⊃U)hu∩3id
∪⊂)XQ⊂(¬
*(

(34∀Izλ∀(∧x4Qte⊃"B"!⊃(λλ∧∧
∪tD¬∀Q3*
Stλ
∀	tu(*J#"A⊃"""$¬∀Q3*
Stλ
∀	qTjXTJ#!!"""!∀
∀Q)Z∀St∧
(	s
:0TJ!QB""!⊃(
∀HY4∀Sj∧∀(	iX0tSe∃**#!!(λλ∧∧λλ
λx5λ	hX∩5λ∧x1∩5λiTj*!QHλλ∧∧λλ

(34∀Izλ	q(I5λ	hX∩5⊃Ijj#"D∧λλλ∧∧
∪0*λh
⊃JYPu∩)yH∪0):3PSjYQ
#!!(λλ∧∧
⊃q*D	q1	~λ	q(I5∃P*)00SλZj*#!$λλλ∧∧λ
∀HY4∀Sj∧	q1	~λ	q(I5∃P*)00SλZj#"D∧λλλ∧∧
∀tjH5∃4d	SqQ(~∃4Q$λ1∩5¬⊃"Hλ∧∧λλλπ7h→xd∞≠⎇_-O(≥<l]→<|d=≠{.5C"H∧∧λλλ∧¬⊃pu
x(∃
!QHλλ∧∧λλ∞g4≤Y<l↑λ≥≠n∧≠→=L]β"H∧∧λλλ∧¬⊂ssHD

∀jH5∃4d
∪t∪λZQ3
$¬∀tuλ~∃4h
It∪⊃*h3λ∪I→
*#!!(λλ∧∧
∃λ∧x1∩5	zK1sih***$↓"C"AQJ⊃⊃(j3H∀HY11∩*J∀St
4
⊂5	y*(β!$λλλ∧∧λ
∀HY4∀Sj∧⊂5∪iT	i4iz4Pq(i3⊃*!QHλλ∧∧λλ

(34∀Izλ⊂5	y(	q
(1U
!QHλλ∧∧λλ

(34∀Izλ⊂5	y(	s	~u1(I5⊂siY03Q¬⊃"Hλ∧∧λλλ¬
Q34
)tλ⊂*Is(	h~∪s2(511∩*Hss3(→Q
*$↓"C"G7h_(
M<⎇λ
|H_;
D≥~→$];XnM;{\d
;H≥

<h→M≥→+C! ↓E⊃⊃1J
StλλX∩5β!!(
∀HY11∩*D	11	~	2⊃)Jβ"B!∀λ	1(I5#!!"(λ∧X1∩5εQ"B"$∧	11	~
C"A⊃(λ	(X∩5)Ip1)Zqc"A⊃(λ	(ZP3)I4uβ!!"(λ∧X5P3¬X5∪s!Q@∧DPλ∩bc S⊗g*fP"iεEαDP⊂"Q$j!gSf`g"βEDPλ∩f'`Q⊗bb$U⊗dg$UεE∧DH⊂∩`aRe)bi∃ε@
		  %AIL¬'%P~∀α∩@Cβ'
⊂~⊂hP$%↓α*
∞&u~⊗JPhP$%↓α*
ε~⎇∩∀4(HI↓↓⊗∀J0∃≤X*@hP⊃∀αα8~$`!"B"$∧	0qλY⊃1⊃!Q@"(∧∧0q∀IA"B"$∧	0rλXp¬VbS"fbg∃)FE∧BP⊂∩aR ¬CK-EXP@%∃''β∨8~∀$J↓↓ε∞EαJ&:_h($¬α↓⊗∞α,~-6V¬:εJ∩_h($%α↓⊗∞J-α2ε∞(h($¬α↓⊗∩ε$	6&:M 4($J↓↓⊗∩,b⊗B∀hP$%↓α*∩⊗2-"⊗H4PH%↓↓,"⊗N∞,r⊂4!⊃∩ααXXDl8∧SaQB"(∧∧11P)J05⊃!QB"(∧∧1R3HA B"$∧	1q*H⊃1C!!"(λ∧Y3Tuλ→U∩0*H#"B!∀λ	3λYQu∩↓QB"(∧∧305λ→β"B!∀λ	))X5⊂r↓Q@"(∧∧0ssJI3U1%Y05⊂i↓ B"$∧	33
	!"B!∀λ	3)J∪c"A⊃(λ	)ZT∩#!!"(λ∧Y4T∪aQB"(∧∧3Q1aQ@"(∧∧3Q6
A B"$∧	4∪j↓ B"$∧	4∪j1"B"$∧	4Q(_⊃C"A∀λλλ∧∧λλλ∧∧4Q0(E1R3λU3P3(Q"B"$∧	4⊂**q+1I→⊃3P)X#"B!∀λ	4HZ∪⊂0hQ"B"$∧	3∀jXTu∩*J5⊃#!!"(λ∧Zu0TjI5∃5λQ"B"$∧	4t
)3Uβ!!"(λ∧Zu∀R)Htu0AQ@∧DPλ∩ij)∃aj*i⊃FE∧DH⊂∩j'T!d"aRFE∧DH⊂∩bb∩j#i*∪h&"k⊃fεE∧BP⊂∩jS"'`FB∧DP⊂	i`k"S`i%FB∧DP⊂	jg"'RibjεB∧DP⊂	i"ij∪i"ViU j"FB∧DP⊂	ii$j⊃cεE∧BP⊂"b∩jεE∧BP⊂)"Kbb$jβE∧DPλ∩cbj∪ fbFB∧DP⊂	k`g"∪kFE∧BP⊂∩kRdεDOW-BACK
		  %WINDOW-FMRWARD
α		  %GETNAME
∩∩@K≠β-	4∀∩∩@EXIT
		  %JUMP
		  %MARK
		  %REMARK
;		  %CHAR1
		  %EDMACRO
		  COPY)
	 EDITFNS) 

(DEFPROP EDIT
	 (%/#CE %TOP-EDIT-EXP
	       ←
	       %/#CHAIN
	       %/#UNDOFLAG
	       %/#UNDOLIST
	       %UNDOQLENGTH
	       %EDITREADTABLE
	       %STANDARDREADTABLE
	       %EDITFUNCTIONS
	       %LAST-FIND-PATTERN
	       %LAST-PATTERN
	       %LAST-CONTINUE-STACK
	       %LAST-SAVE-FILE
	       %/#RETAIN
	       %EDIT-PRINDEPTH
	       %EDIT-PRINLENGTH
	       %MARKCHAIN
	       %MARKCHAINLENGTH
	       ?%PAT
	       ?%X
	       ?%X
	       ?%Y
	       ?CE
	       ?%N)
	 EDITVARIABLES) 

;; this must be the last s-expression in the file.
(PROG (FILE) 
      (SETQ FILE (LIST 'EDIT
		       (COND ((STATUS FEATURE DEC10) 'INI)
			     (T '|(init)|))
		       'DSK
		       (STATUS UDIR)))
      (COND ((APPLY 'UPROBE FILE)
	     (TERPRI)
	     (putprop 'edit '|;loading EDIT.INI| 'edit-init-file-load-message)
	     (PUTPROP 'EDIT FILE 'EDIT-INIT-FILE)))
      [IFN SAIL
	     (DEFPROP INITED (LOADED FAS DSK (MAC LSP)) AUTOLOAD)
	     (DEFPROP EREAD (EREAD FAS DSK (MAC LSP))
				     	    AUTOLOAD) 
	     (DEFPROP BEEP (BEEP FAS DSK (MAC LSP))
				     	    AUTOLOAD)]
      (MAPC 
       (FUNCTION (LAMBDA (Q) 
			 (PUTPROP Q T 'ATOMIC-EDITCOMMAND)))
       '(UNDO P PS PP ↑ TOP RI RO LI LO NX BK BF DELETE F OK W
	 [IFN SAIL L LS ] MATCH REMATCH REMEMBER EXIT HELP MARK JUMP UNMARK SAVE))
      (MAPC 
       (FUNCTION (LAMBDA (Q) (PUTPROP Q T 'LIST-EDITCOMMAND)))
       '(UNDO  COMMENT A B R PA PB PAI PBI PL PD PRA BF F
	 TR TPRA WINDOW
	 REMATCH SAVE REFILE CR PR MATCH AI BI))
      (SSTATUS FEATURE EDIT))